JavaScript正则表达式核心汇总,


RegExp对象是隶属于顶级对象window的属性,全称为“Regular Expression(正则表达式)”。它用于对字符串执行模式匹配。
正则表达式以^开始,以$结束:

"^$"

当正则表达式的外围不使用英文双引号时,必须在正则表达式的前后端添加斜杠:

/^$/

正则表达式可以通过以下两种语法创建:

直接量语法
/pattern/attributes
创建RegExp对象的语法
new RegExp(pattern, attributes);

在JavaScript正则表达式中,RegExp对象支持以下修饰符:

i  执行对大小写不敏感的匹配
g  执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
m  执行多行匹配

RegExp修饰符是可选的,并且它们不分先后顺序。使用语法为:

/^$/igm;
new RegExp(/^$/, igm);
new RegExp("^$", igm);

正则表达式常用元字符见下表:

.         查找单个字符,除了换行和行结束符
\w        查找单词字符
\W        查找非单词字符(与\w相反)
\d        查找数字
\D        查找非数字字符
\s        查找空白字符(空格)
\S        查找非空白字符
\b        查找单词边界
\B        查找非单词边界
\0        查找NUL字符
\n        查找换行符
\f        查找换页符
\r        查找回车符
\t        查找制表符
\v        查找垂直制表符
\xxx      查找以八进制数xxx规定的字符
\xdd      查找以十六进制数dd规定的字符
\uxxxx    查找以十六进制数xxxx规定的Unicode字符

()、[]、{}三者在JavaScript中的作用各不相同。
小括号()内支持[]、{}及任何元字符、普通字符。
在正则表达式中,如果其中某个子正则表达式包含逻辑关系“或”(字符表示为|),那么该逻辑表达式必须位于()内。
示例

aliyun\D|\s      匹配包含“aliyun”及非数字字符,或空白字符的字符串(参见I)
aliyun(\D|\s)    匹配包含“aliyun”,及非数字字符或空白字符两者之一的字符串(参见II)
(I)aliyun\D|\s表示从aliyun\D或\s中任选其一
(II)aliyun(\D|\s)表示从aliyun\D或aliyun\s中任选其一

中括号[]中不支持任何元字符和逻辑“或”字符|。
字符-可在[]中出现多次。但字符^仅允许在[]中出现一次,并且必须位于首位。
示例

[0-9]        查找从0至9的任何数字
[abcd]       查找是a、b、c或d的字符
[^est]       查找不是e、s或t的字符
[a-z]        查找位于小写字母a至z之间的字符
[A-Z]        查找位于大写字母A至Z之间的字符
[A-N3-9m-z]  查找位于大写字母A至N或数字3至9或小写字母m至z之间的字符
[^2-7c-s]    查找不是位于数字2至7或小写字母c至s之间的字符

大括号{}内不支持任何元字符,它仅用于规定某个子正则表达式的出现次数。部分量词解释如下:

n+        查找任何包含至少一个n的字符串
n*        查找任何包含零个或多个n的字符串
n?        查找任何包含零个或一个n的字符串
n{X}      查找包含X个n的序列的字符串
n{X,Y}    查找包含X至Y个n的序列的字符串
n{X,}     查找包含至少X个n的序列的字符串
n$        查找任何结尾为n的字符串
^n        查找任何开头为n的字符串
?=n       查找任何其后紧接指定字符串n的字符串
?!n       查找任何其后没有紧接指定字符串n的字符串

对于由两个和更多普通字符或元字符组合而成的正则表达式,可使用()将它们视为一个整体以使它们共同成为某个量词的作用对象。示例

\d+                        查找至少为一位数字的字符串
(\d\d)?                    查找至少为无,至多为两位数字的字符串
(Alibaba\sCloud){1,2}      查找至少出现1次,至多出现2次“Alibaba Cloud”的字符串
(Alibaba\sCloud\r\n){3,}   查找至少出现3次“Alibaba Cloud”且包含回车符和换行符的字符串
Alibaba(?=Group)           查找任何Alibaba其后紧接Gruop的字符串(详见III)
Cloud(?!Alibaba)           查找任何Cloud后没有紧接Alibaba的字符串(详见IV)
(III)“Alibaba Group Holding Limited”的匹配结果为“Alibaba”
(IV)“Alibaba Cloud”的匹配结果为“Cloud”

相关内容