JavaScript正则表达式核心汇总

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        查找非单词字符
\d        查找数字
\D        查找非数字字符
\s        查找空白字符(空格)
\S        查找非空白字符
\b        匹配单词边界
\B        匹配非单词边界
\0        查找NUL字符
\n        查找换行符
\f        查找换页符
\r        查找回车符
\t        查找制表符
\v        查找垂直制表符
\xxx      查找以八进制数xxx规定的字符
\xdd      查找以十六进制数dd规定的字符
\uxxxx    查找以十六进制数xxxx规定的Unicode字符

()、[]、{}三者在JavaScript中的作用各不相同。
小括号()内支持[]、{}及任何元字符、普通字符。
如果需要在正则表达式中引用逻辑“或”|,那么该逻辑表达式必须放置于()内。
示例

(aliyun|\d\d)    匹配包含“aliyun”或两位数字的字符串
(aliyun(\D|\s))  匹配包含“aliyun”、非数字字符或空白字符两者之一的字符串

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

[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的字符串(详见I)
Cloud(?!Alibaba)           查找任何Cloud后没有紧接Alibaba的字符串(详见II)

(I)“Alibaba Group Holding Limited”的匹配结果为“Alibaba”(已用下划线标出);
(II)“Alibaba Cloud”的匹配及为“Cloud”(已用下划线标出)。

原文标题: JavaScript正则表达式核心汇总

原文出处: 云栖社区

原文链接: https://yq.aliyun.com/articles/639615?spm=a2c4e.11157919.spm-cont-list.38.146c27aep2VvlA

发表评论

登录后才能评论