字符
|
示意在两个或多个项之间举行挑选,相似或/
最先和末端\
转义
-
连字符,当且仅当在字符组 []
的内部示意一个局限,比方[A-Z]
示意局限从A
到Z
;假如需要在字符组内里示意一般字符 -
,放在字符组的开首或末端即可.
婚配出换行符 \n
以外的任何单个字符\d
等价[0-9]
,婚配0
到9
数字\D
等价[^0-9]
,与 \d
相反\w
婚配以下字符:A-Z、a-z、0-9
个下划线,等价于 [A-Za-Z0-9]
\W
[^A-Za-z0-9]
限定符(量词字符)
显现限定符位于大括号{}
中,并包含指导涌现次数上下限的数值; *+?
这三个字符属于单字符限定符:
{n}
恰好婚配 n
请输入代码次{n,}
起码婚配 n
次{n,m}
婚配起码 n
次,最多 m
次,即婚配 n
到 m
次*
等价 {0,}
+
等价 {1,}
?
等价 {0,1}
注重:
显现限定符中,逗号和数字之间不能有空格,不然返回
null
贪欲量词
*
和+
:JavaScript
默许是贪欲婚配,即婚配反复字符是尽量多的婚配惰性(起码反复婚配)量词
?
:当举行贪欲婚配,只需要在要婚配的字符背面加上一个?
即可
var reg = /a+/;
var reg2 = /a+?/;
var str = 'aaab';
str.match(reg); // ["aaa"]
str.match(reg2); // ["a"]
定位点(锚字符、边境)
^
婚配最先的位置。将 ^
用作括号 []
表达式中的第一个字符,则会对字符集求反$
婚配末端的位置\b
与一个字边境婚配,比方 er\b
与 “never
” 中的 “er
” 婚配,但与 “verb
” 中的 “er
” 不婚配\B
非边境字婚配
标记
[]
字符组,标记括号表达式的最先和末端。[...]
婚配括号内恣意字符。许多字符在 []
都邑落空本来的意义:[^...]
婚配不在括号内的恣意字符;[?.]
婚配一般的问号和点号
注重:
\
在 []
中仍为转义字符。假如要婚配反斜杠字符,运用两个反斜杠 \\
{}
标记限定符表达式的最先和末端{}
标记子表达式的最先和末端,重要作用是分组,对内容举行辨别
(形式) 记着和这个形式婚配的婚配项(捕捉分组),不要滥用括号,假如不需要保留子表达式,可运用非捕捉型括号 (?:)
来举行机能优化(?:形式
) 与形式婚配,但不保留婚配项(非捕捉分组)(?=形式)
零宽正向先行断言,请求婚配与形式婚配的搜刮字符串。找到一个婚配项后,将在婚配文本之前最先搜刮下一个婚配项;但不会保留婚配项(?!形式)
零宽负向先行断言,请求婚配与形式不婚配的搜刮字符串。找到一个婚配项后,将在婚配文本之前最先搜刮下一个婚配项;但不会保留婚配项先行断言 ?=
形式:x
只要在 y
前面才婚配,必需写成 /x(?=y)/
。诠释:找一个 x
,谁人 x
的背面要有 y
先行否认断言 ?!
形式:x
只要不在 y
前面才婚配,必需写成 /x(?!y)/
。诠释:找一个 x
,谁人 x
的背面没有 y
ES7提案
后行断言( ?<= 形式)
:与”先行断言”相反, x
只要在y
背面才婚配,必需写成 /(?<=y)x/
。诠释:找一个 x
,谁人 x
的前面要有 y
。后行否认断言 ( ?<! 形式)
: 与”先行否认断言“相反,x
只要不在y
背面才婚配,必需写成 /(?<!y)x/
。 诠释:找一个x
,谁人 x
的前面没有 y
。反向援用
:重要作用是给分组加上标识符 ln n 示意援用字符,与第 ln 个子表达式第一次婚配的字符相婚配
var str = '<div class="o2">' +
'<div class="o2_team">' +
'<img src="">' +
'</div>' +
'</div> ';
// <(?!img) 示意找一个左尖括号<,而且左尖括号 < 的背面没有img字符;
// (?:.|\r|\n)*? 示意婚配摆布尖括号<>内里的.或\r或\n,而且婚配次数为*?;(?:)不保留婚配项,进步机能;
// *背面加个? 示意非贪欲婚配。
var reg = /<(?!img)(?:.|\r|\n)*?>/gi;
str.match(reg);
反向援用的例子,给 MikeMike 字符后加个单引号:
var reg = /(Mike)(\1)(s)/;
var str = "MikeMikes";
console.log(str.replace(reg, "$1$2'$3"));
// 返回效果 MikeMike's
非打印字符
\s
任何空缺字符。即 [\f\n\r\t\v]
\S
任何非空缺字符\t
Tab
字符 (\u0009)
\n
换行符 (\u000A)
\v
垂直制表符 (\u000B)
\f
换页符 (\u000C)
\r
回车符 (\u000D)
注重
\n
和 \r
一同运用,即 /[\r\n]/g
来婚配换行,由于 Unix
扩大的体系以 \n
标志末端,Windows
以 \r\n
标志末端
其他
\cx
婚配 x
指导的控制字符,请求 x
的值必需在 A-Z
或 a-z
局限内\xn
婚配 n n
是一个十六进制转义码,两位数长\un
婚配 n
个中 n
是以四位十六进制数示意的 Unicode
字符\nm
或 \n
先尝试反向援用,不可则再尝试标识为一个八进制转义码\nml
当 n
是八进制数字 (0-3)
,m
和 l
是八进制数字 (0-7)
时,婚配八进制转义码 nml
修饰符
i
实行不辨别大小写的婚配g
实行一个全局婚配,即找到一切的婚配,而不是在找到第一个今后就住手m
多行婚配形式,^
婚配一行的开首和字符串的开首,$
婚配行的完毕和字符串的完毕ES6
新增 u
和 y
修饰符
u
修饰符 Unicode
形式,用来正确处理大于 \uFFFF
的 Unicode
字符。正确处理四个字节的 UTF-16
编码
// 加u修饰符今后,ES6就会辨认\uD83D\uDC2A为一个字符,返回false。
/^\uD83D/u.test('\uD83D\uDC2A'); // false
/^\uD83D/.test('\uD83D\uDC2A'); // true
y
修饰符 与g
修饰符都是全局婚配,不同之处在于:lastIndex
属性指定每次搜刮的最先位置,g
修饰符从这个位置最先向后搜刮,直到发明婚配为止;然则 y 修饰符请求必需在 lastIndex
指定的位置发明婚配,即 y
修饰符确保婚配必需从盈余的第一个位置最先
/b/y.exec('aba') // null
/b/.exec('aba') // ["b"]
优先级递次
\
转义符(),(?:),(?=),[]
括号和中括号*、+、?、{n}、{n,}、{n,m}
限定符
任何元字符 ^、$、\
定位点和序列|
替代