使用正则的过程中可能对Js正则的语法记得不太牢,顺便也整理了一下,列在这里。
正则对象
(1)构造函数方式
var reg = new RegExp('abc', 'gi');
第一个参数是正则的内容,第二个参数是修饰符,修饰符通常有三种,i,g,m,i表示的含义是忽略大小写进行匹配,g表示全局匹配即匹配到第一个之后不停止继续匹配,m表示多行匹配,更改^和$的含义,匹配任意一行的行首和行尾。
(2)字面量方式
var reg = /abc/gi;
两个斜杠之间的是定义的正则内容,最后一个斜杠之后的是修饰符,这种方式比第一种简单高效,所以通常使用第二种方式来定义正则。
(3)方法
方法名 |
语法 |
描述 |
test |
RegExpObject.test(string) |
检测字符串是否与正则匹配 |
exec |
RegExpObject.exec(string) |
检索字符串中的正则表达式的匹配 |
compile |
RegExpObject.compile(regexp,modifier) |
对正则表达式进行编译 |
(4) 支持正则表达式的String对象的方法
方法名 |
语法 |
描述 |
search |
str.search(regexp) |
检索与正则表达式相匹配的值 |
match |
str.match(regexp) |
找到一个或多个正则表达式的匹配 |
replace |
str.replace(regexp,replacement) |
替换与正则表达式匹配的子串 |
split |
str.split(regexp, howmany) |
把字符串分割为字符串数组 |
正则的字符
一、元字符
元字符 |
对应说明 |
. |
匹配除换行符之外的任意字符 |
\w |
匹配字母数字下划线,等同于:[a-zA-Z0-9] |
\s |
匹配任意空白字符 |
\d |
匹配数字,等同于[0-9] |
\b |
匹配单词边界 |
| |
或匹配,如 /x|y/ 匹配x或y两个字符 |
^ |
匹配字符串的开始 |
$ |
匹配字符串的结束 |
二、重复匹配
匹配字符 |
对应说明 |
* |
重复出现零次或多次 |
+ |
重复出现一次或多次 |
? |
重复出现零次或一次 |
{n} |
重复出现n次 |
{n,} |
至少重复出现n次 |
{m,n} |
重复重现m到n次,其中,m |
三、修饰符
修饰符 |
对应说明 |
i |
ignoreCase的缩写,表示忽略字母的大小写 |
g |
global的缩写,表示全局匹配 |
m |
multiline的缩写, 更改^和$的含义,匹配任意一行的行首和行尾 |
四、反义字符
反义字符 |
对应说明 |
[^x] |
匹配除x 之外的所有字符, 其中x 可以为任意字符 |
[^xyz] |
同上,匹配除xyz 之外的任意字符 |
\W |
匹配除了字母、数字、下划线之外的任意字符,等同于: [^\w] |
\S |
匹配除了空白符之外的任意字符,等同于:[^\s] |
\D |
匹配不是数字的所有字符,等同于:[^\d] |
\B |
匹配不是单词边界的字符,等同于: [^\b] |
五、转义字符
转义字符 |
对应说明 |
\xnn |
匹配十六进制数 |
\f |
匹配换页符,等同于: \x0c |
\n |
匹配换行符,等同于: \x0a |
\r |
匹配回车符,等同于:\x0d |
\t |
匹配水平制表符,等同于:\x09 |
\v |
匹配垂直制表符,等同于:\x0b |
\unnnn |
匹配Unicode字符,如:\u00A0 |
六、分组/捕获
分组字符 |
对应说明 |
(exp) |
用小圆括号进行分组 |
(?:exp) |
匹配exp正则,但不产生分组号 |
exp1(?=exp2) |
前瞻断言,匹配exp1,但后面必须是exp2 |
exp1(?!=exp2) |
后瞻断言,匹配exp1,但后面不能是exp2 |
七、贪婪与惰性
匹配字符 |
对应说明 |
*? |
重复出现零次或多次,但尽可能少的重复 |
+? |
重复出现一次或多次,但尽可能少的重复 |
?? |
重复出现零次或一次,但尽可能少的重复 |
{n}? |
重复出现n次,但尽可能少的重复 |
{n,}? |
至少重复出现n次,但尽可能少的重复 |
{m,n}? |
重复重现m到n次,其中,m |
八、常用正则表达式
描述 |
正则 |
电话号码 |
/[0-9-()()]{7,18}/ |
邮编 |
/^[1-9]\d{5}(?!\d)$/ |
中文字符 |
/[\u4e00-\u9fa5]/g |
Email地址 |
/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+.)+[A-Za-z]{2,14}/ |
手机号码 |
/0?(13|14|15|17|18|19)[0-9]{9}/ |
身份证号 |
/\d{17}[\d|x]|\d{15}/ |
九、在线工具
参考