首页 > 代码库 > 正则表达式

正则表达式

正则表达式

脑子欠抽,对于正则表达式一直看了又忘,看了又忘,还是记录下来一些较常用的东西,方便以后查阅的好。

1 \b : 匹配一个位置,用来区分单词边界,\bhi\b 可以匹配单词hi,\b为边界符
2 .* 表示出了换行符意外的任意字符,并且可以重复任意多个,\bhi\b.*\bhello\b 匹配hi abcdefb hello
3 \d表示数字,重复次数可以用大括号括起来 0\d{2}-\d{8}
4 \s匹配任意的空白符
5 \w匹配字符或数字或下划线或汉字等 \ba\w*\b
6 \d+ 表示1个或者更多连续的数字,和*类似,但*可能是0,而+则至少有1个, \bw{6}\b, ?表示出现一次或者不出现
7 ^匹配开头,$匹配结尾,例如验证QQ号位数 ^\d{5,12}$
8 \\字符串转义, \*和 \.等
9 [aeiou] 中括号来匹配字符集 [.?!]或者[0-9]等价于\d, [a-z0-9A-Z]等价于\w(只考虑英文的话)
10 复杂例子 \(?0\d{2}[)-]?\d{8} 可拆分为 \(?--0--\d{2}--[)-]?--\d{8}
11 | 分支条件 \d{5}-\d{4}|\d{5}匹配美国的邮政编码,5位数字或者用连字号间隔的9位数字,注意与\d{5}|\d{5}-\d{4}的区别
12 () 分组,用()分了组之后,你就可以利用{}指定这个分组的重复次数了 (\d{1,3}\.){3}\d{1,3}
13 反义 \W表示非字符数字下划线汉字的字符  

1 \S表示非空白符的字符2 \D表示非数字的字符3 \B表示不是单词开头或结束的位置4 [^x]中的^类似!的作用,表示非,这里匹配除了x意外的任意字符5 [^aeiou]匹配除了aeiou意外的任意字符6 <a[^>]+>匹配用尖括号括起来的以a开头的字符串

 

14 exec方法:

1 function execReg(reg, str) {2 3   var result = reg.exec(str);4   alert(typeof result);5 }6 var reg = /(\w)(\w)(.+)/; 7 var str = ‘bbs.bblueidea.com‘;8 execReg(reg,str);

结果为:

1 result[0]:bbs.bblueidea.com2 result[1]:b3 result[2]:b4 result[3]:s.bblueidea.com

由上面例子可见,返回对象[0]就是整个正则表达式所匹配的内容。后续的元素则是各个子正则表达式的匹配内容。


15.test方法: /abc/.test(‘abcd‘) 返回true


16 g, i, m: g表示全局匹配,i表示忽略大小写,m表示多行匹配,‘abcabc‘.match(/ab/)将返回["ab"];
‘abcabc‘.match(/ab/g)将返回["ab","ab"];


17 replace方法:‘bbs.baidu.com‘.replace(/b/g, ‘c‘);在replace函数中使用$引用子正则表达式匹配内容,例如:
var a = ‘haha hoho‘.replace(/(\w+)\s(\w+)/, ‘$2 $1‘);
结果为: a=‘hoho haha‘;
由于$的特殊含义,所以如果希望使用$这个字符的话需要写成$$,
var a = ‘haha hoho‘.replace(/(\w+)\s(\w+)/, ‘$$ $$‘);
结果为: a=‘$ $‘;


18.search方法,str.search(reg)返回第一次匹配的位置;


19.split方法,str.split(reg, ‘seprator‘)返回分割后的数组

 

整理参考:30分钟正则表达式  javascript正则表达式函数详解

正则表达式