实现方式
正则赋值
var rg = /0-9/g
var str = "967"
test返回一个布尔值,表示当前模式是否能匹配参数字符串
rg.test(str)
exec用来返回匹配的结果。如果发现匹配,就返回一个数组,数组中的成员都是匹配的字符串,否则返回null
rg.exec(str)
字符串方法
match对字符串进行正则匹配,返回匹配的数组,否则返回null
str.match(rg)
search返回第一个满足条件的匹配结果在整个字符串中的索引,如果没有匹配,则返回-1
str.search(rg)
replace可以替换匹配的值,他接受两个参数,第一个是正则表达式,表示模式,第二个是替换的内容
var timeData = "2021.09.12"
timeData.replace(/.\/g,"-")
元字符
转义字符
\
.\ = .
匹配任意的字符
.
^ $ 匹配位置字符
^ 匹配字符串开始的位置
$ 匹配字符串结束的位置
匹配数字和字母(\w 和 \W)
\w 匹配数字和字母
\W 匹配非数字和字母
匹配数字和非数字(\d 和 \D)
\d 匹配数字
\D 匹配非数字
匹配空白字符(\s 和 \S)
\s 匹配空白字符
\S 匹配非空白字符
匹配里面的任意字符
[]
匹配所有的中文
/[\u4e00-\u9fa5]/g
匹配除a和z之外的所有字符
[^a-z]
匹配重复一次或者多次
+
多个集合
/[mM][zZ]/g
匹配重复0次或者多次
*
匹配重复1次或者0次(可有可无)
?
分组匹配
()
分组匹配捕获多组(第1组)
RegExp.$1
此分组匹配不捕获
(?:http|https)(xxx)
或者
|
(http|https)
匹配重复的次数(a匹配五次)
a {5}
最少4位 最多8位
{4,8}
正向肯定预查 ,只匹配元前面的字符,但不匹配元(?=)
/\d+(?=元)/g
正向否定预查 表示不是元的字符
/\d+(?!元|\d)/g
反向肯定预查 表示肯定是@,但不匹配(?<= )
/(?<!@)\d+/g
反向否定预查 表示肯定不是@,不匹配(?<!)
/(?<@元|\d)\d+/g