语法
如何定义一个正则
JS 中使用非常方便
- 直接量:
let reg = /s$/ - 构造函数:
let reg = new RegExp('s$');
属性:
- global是一个只读的布尔值,说明这个正则表达式是否带有修饰符g
- ignoreCase是一个只读的布尔值,说明正则表达式是否带有修饰符i
- multiline只读布尔值,是否带有m
用法
介绍如何构建一个正则表达式
直接量字符
支持非字母的匹配,通过反斜线进行转义

字符类
一个字符类可以匹配它所包含的任意字符

重复
正则表达式的模式匹配总是会寻找字符串中第一个可能匹配的位置
非贪婪的重复:只需在待匹配的字符后跟随一个问号
选择、分组、引用

()作用:
- 把单独的项组合成子表达式
- 在完整的模式中定义子模式,可以从目标中抽出和圆括号中的子模式相匹配的部分
- 允许在同一正则表达式的后部引用前面的子表达式
指定匹配位置

修饰符
修饰符是放在//符号之外的

方法
介绍支持正则的方法
字符串方法应用正则
search()
不支持全局检索,忽略正则表达式参数中的修饰符g
1 | let str = "chj chj chj!"; |
replace()
replace方法不改变原来的值
1 | let str = "chj Chj chj!"; |
替换的可以是字符串,也可以是函数(也就是上面’chjssg’这个位置)。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。
例子:
1 | let name = "Jeff, Chen"; |
1 | // 函数的例子 |
match()
1 | // 有全局匹配字符g |
split()
1 | // eg1 |
正则对象上方法
exec()
exec() 方法用于检索字符串中的正则表达式的匹配。
该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
1 | let reg = /chj/; |
test()
test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
1 | let reg = /chj/; |
一些正则例子
1 | // 匹配url: http(s)://... |