您的位置:首页 > Web前端 > JavaScript

浅入javascript正则表达式的规则.

2014-04-08 09:08 309 查看
今天在看jQuery源码的时候,到处都是正则的用法,一气之下就狠下心来.重新回顾了一下正则.下面是做的笔记.非常浅的入门.

/*
i:表示不区分大小写
g:表示可以全局配置
m:表示可以多行配置
*/
/*
^:表示从字符串的第一个位置开始匹配
*/
var result = false;
var str = "guoGuo";
var reg = /^gu/; //匹配字符串是否已gu开头
result = reg.test(str);//true

/*
$:匹配字符串的尾端
*/
str = "guoyansi";
reg = /i$/;//是否已i结尾
result = reg.test(str); //true
/*
*:匹配前一个字符0次或多次
/a星号/:以a开头开始匹配,如果匹配到a,则返回a,否则返回null
/ab星号/:以a开头开始匹配,如果匹配到了a,返回a,匹配到了abbb...返回abbb....
0次:没有b的就匹配a
多次:有a,后面不论多少个b,都匹配出来abbb....
*/
str = "dadbudabbbbc";
reg = /du*/g;
result = str.match(reg);

/*
+:匹配前一个字符一次或多次
/a+/:以a开头开始匹配,如果匹配到a,则返回a,否则返回null
/ab+/:以a开头开始匹配,如果匹配到了a,并且在a后面匹配到了b,则返回abbb...;
1次:表示a后面没有b,就不返回.如果有b则返回ab.有一个b则返回一个b
多次:表示a后面没有b,就不返回.如果有b则返回ab.有多个b则返回多个b
*/
str = "ddadbbbbc";
reg = /ab+/g;
result = str.match(reg);
/*
?:一般是对前一个字符的0次或1次匹配;
0:没有就是0次
1:有就匹配一次
*/
str = "ddabbdbbbbabbc";
reg = /ab?/g;
result = str.match(reg); //ab,ab
/*
?在星号和+,{},?后面,表示原始匹配的最小次数
星号最小次数0;
+:最小次数是1
*/
str = "ddabbdbbbbabbc";
reg = /ab*?/g;
result = str.match(reg); //a,a

reg = /ab+?/g;
result = str.match(reg); //ab,ab

/*
.(点号):匹配一个单独的字符
*/
str = "guoaaaaagio";
reg = /g.o/g;
result = str.match(reg); //guo

/*
(xxx):匹配字符串
*/
str = "guoooooaaaaagjao";
reg = /g(uo*)a/g;
result = str.match(reg); //guoooooa

/*
x(?=y):匹配x,并且只有紧跟的后面是y
*/
str = "guoyansi";
reg = /uo(?=yan)/g;
result = str.match(reg); //uo

/*
x(?!y):匹配x,并且紧跟后面的不是y
*/

str = "guoyansi";
reg = /uo(?!yan)/g;
result = str.match(reg); //null
str = "guoyanuosi";
result = str.match(reg); //uo(后面一个uo)

reg = /\d+(?!\.)/g; /*匹配数组,*/
str = "54.235"; /*从数字开始匹配,匹配到之后,紧跟着后面的不能是数组*/
result = str.match(reg); //5,235
/*
\d:匹配数字字符
*/
reg = /\d/g;
str = "123859";
result = str.match(reg); //1,2,3,8,5,9

/*
\D:匹配非数字字符
*/
str = "abc1hfd8dsv";
reg = /\D/g;
result = str.match(reg); //a,b,c,h,f,d,d,s,v

/*
x|y:匹配x或y,如果x,y都匹配上了,返回x
*/

reg = /uo|n/g;
str = "nguoyansi";
result = str.match(reg); //n,uo,n(在没有g的情况下,返回n)

/*
{n}匹配前一个字符的n次出现
*/
str = "tabbcdabbt";
reg = /ab{2}/g;
result = str.match(reg); //abb,abb

/*
{n,}匹配前一个字符至少出现n次数
*/
str = "tabbbbbcdabbt";
reg = /ab{2,}/g;
result = str.match(reg); //abbbbb,abb

/*
{n,m}匹配前一个字符至少出现n次,至多出现m次
*/
str = "tabbbbbbcabbbbbbbdabbt";
reg = /ab{2,4}/g;
result = str.match(reg); //abbbbb,abbbb,abb

str = "tabbbbcabbbbbbbdabbt";
reg = /ab{2,4}c/g;
result = str.match(reg); //abbbbc

/*
[xyz]:匹配[]的一个字符,等同于[a-z],只匹配其中的一个字符,如果匹配到多个,则返回null
*/
str = "abddgacdg";
reg = /a[bc]d/g;
result = str.match(reg); //abd,acd(bc连一起,就匹配不到)

/*
[^xyz]:匹配非[]中的一个字符
*/
str = "abd";
reg = /a[^bc]d/;
result = str.match(reg); //null

str = "afddgatdg";
reg = /a[^bc]d/g;
result = str.match(reg); //afd,atd

/*
[\b]:匹配退格键
*/

/*
\b:匹配一个词的边界符,例如空格或换行等等,当匹配换行符是,匹配参数m
*/
reg = /\bc./g;
str = "Beijing is ca cbeautiful city";
result = str.match(reg); //ca,cb,ci

/*
\B:代表一个非边界
*/
reg = /\Bi./g;
str = "Beijing is a beautiful city";
result = str.match(reg); //ij,in,if,it

/*
\f:匹配一个换页符
*/

/*
\n:匹配一个换行符,因为是换行符,所以要加入参数m
*/

/*
\r:匹配回车符
*/

/*
\s:匹配空格符
*/
str = "ab cd t";
reg = /b[\s]c/g;
result = str.match(reg); //b c

/*
\S:匹配非空格
*/
str = "guoy ansiguoyansi";
reg = /y[\S]n/g;
result = str.match(reg); //yan

/*
\t:匹配横向的tab
*/

/*
\v:匹配竖向的tab
*/

/*
\w:匹配数字、_或字母[a-zA-Z0-9]
*/
str = "g1u中5国ir人_r";
reg = /\w/g;
result = str.match(reg); //g,1,u,5,i,r,_,r

/*
\W:匹配飞数字、_或字母[^a-zA-Z0-9]
*/
str = "g1u中5国ir人_r";
reg = /\W/g;
result = str.match(reg); //中,国,人
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: