Open duyue6002 opened 5 years ago
[xzy]
, [^xyz]
, \s
, \S
, \d
, \D
, \w
, \W
, \b
, .
都是匹配一个字符。
注:[a-z-]
匹配的是a~z
+-
。
/a/g
, /a/i
, /a/m
分别对应全局匹配、不分大小写、匹配换行
RegExp.prototype.exec()
在捕获时用,reg实例有lastIndex
属性,记录上一次匹配位置,下次匹配就从这里开始。
String.prototype.match(//))
设置全局返回数组,不设置全局返回RegExp.prototype.exec()
结果。String.prototype.split(//))
在除去多位空格时很方便
*
= {0,}
?
= {0,1}
+
= {1,}
默认是贪婪匹配,选择长的匹配。
在量词后面加?
就是惰性匹配,选择短的匹配。
加了小括号就是捕获型数组,会被保存。为了不被捕获,在括号开头加(?:)
。
注:(a|b)
会自动生成子数组
RegExp对象:RegExp.$n
String对象:String.prototype.replace(/r(e)g/, "$1")
当有分组当时候\1
代表引用第一个分组,在正则表达式中就可以使用。
\w+(?=\.(jpg|png|gif))\.\1
匹配图片名
(?=)
后面跟条件字符,=
后面不需要加()
,返回的不是条件,而是符合条件的字符。如果需要返回条件字符,加()
获得捕获数组。
(?!)
,跟正向语法相同。
?=
放到前面作为匹配项
"1234567890.12".replace(/(?=(\B\d{3}))+($|\.)/, ","); // 匹配后面有3位数字的那些""且""不为边界
"jfioIWK430".match(/(?=(.*\d))(?=(.*[A-Z]))(?=(.*[a-z])).{8,15}/);
/<(\/?[^\>]+)>/g
21/3/2019
- /\d{1,2}\/\d{1,2}\/\d{4}/
#eee或#ffffff
- #[A-Za-z0-9]{3}([A-Za-z0-9]{3})?
CheatSheet
MDN 可视化网站 在线测试