一. 正则表达式语法

1. 元字符

1.1 匹配字符

元字符 说明
. 匹配除换行符以外的任意字;
\w 匹配字母、数字、下划线或行字
\W 匹配任意非字母、数字、下划线或汉字的字符
\s 匹配任意的空白符
\S 匹配任意非空白符的字符
\d 匹配数字
\D 匹配任意非数字的字符

1.2 匹配位置

元字符 说明
\b 匹配单词的开始或结束
\B 匹配不是单词开口或结束的位置
^ 匹配字符串的开始
\$ 匹配字符串的结束
\G 上一个匹配的结尾(本次匹配开始)
\A 字符串开头(类似^,但不受处理多行选项的影响)
\Z 字符串结尾或行尾(不受多行选项的影响)
\z 字符串结尾(类似$,但不受处理多行选项的影响)

1.3 重复

元字符 说明
* 重复匹配零次或更多次
+ 重复匹配一次或多次
? 重复匹配零次或一次
{n} 重复匹配n次
{n,} 重复匹配n次或更多次
{n, m} 重复匹配n到m次

2. 字符转义

需要转义的字符有:$, (, ), *, +, ., [, ], ?, \, ^, {, }, |。

3. 字符类

特殊字符 说明
\0hh 8进制值所表示的字符
\xhh 16进制值hh所表示的字符
\uhhhh 16进制值hhhh所表示的Unicode字符
\t 制表符(Tab键)
\v 垂直制表符
\n 换行符
\r 回车符
\f 换页符
\e Escape
\cN ASCII控制字符

4. 零宽断言

零宽断言表示匹配字符的时候再添加一些定位条件,使匹配更精准。

正则表达式 说明
\w+(?=ing) 匹配以ing结尾的多个字符(不包括ing)
\w+(?!ing) 匹配不是以ing结尾的多个字符
(?<=re)\w+ 匹配不是以re开头的多个字符(不包括re)
(?<!re)\w+ 匹配不是以re开头的多个字符
(?<=\s)\d+(?=\s) 匹配两边是空白符的数字,不包括空白符

5. 贪婪与懒惰

贪婪: 匹配尽可能长的字符串;

懒惰:匹配尽可能短的字符串;

懒惰模式的启用只需在重复元字符之后加上?即可。

正则表达式 说明
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n, m}? 重复n到m次,但尽可能少重复
{n,} 重复n次以上,但尽可能少重复

二. JavaScript中正则表达式的处理

JavaScript中在String和RegEx对象中,实现正则
表达式处理的方法有以下几个:

1. String方法

match(searchvalue | regexp):在字符串内检索指定的值,返回匹配结果的数组;

replace(regexp/substr,replaceText):在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串;返回一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的;

search(regexp):检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,返回字符串中第一个与 regexp 相匹配的子串的起始位置,如果没有找到任何匹配的子串则返回 -1;

split(separator,arrayMaxLength):把一个字符串分割成字符串数组,返回分割后的字符串数组;

2. RegEx方法

exec(string):检索字符串中的正则表达式的匹配,返回一个匹配结果的数组。如果未找到匹配,则返回值为 null;

test(string):检测一个字符串是否匹配某个模式,返回Boolean值;

三. 正则表达式的应用例子

匹配中文字符: \u4e00-\u9fa5

匹配空行: \n[\s| ]*\r

匹配HTML标记: <(.)>.<\/\1>|<(.* \/)>

匹配首尾空格: (^\s)|(\s$)

验证Email地址: ^\w+[-+.]\w+@\w+([-.]\w+).\w+([-.]\w+)*$

验证网址URL:

验证电话号码: ^((\d{3,4})|\d{3,4}-)?\d{7,8}$

【备注:电话号码的正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX】

验证Html 16进制颜色值: ^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$

本文作者:子匠_Zijor,转载请注明出处:http://www.dengzhr.com/js/539