正则表达式
正则表达式是国际标准,跨越语言
正则表达式是一个规则,用于验证字符串。
基础
- 字面量匹配
规则中直接书写字面量字符
- 特殊字符
. // 匹配任意字符
^ // 匹配字符串的开头
$ // 匹配字符串的结尾- 转义符
\n // 匹配换行符
\r // 匹配回车符
\t // 匹配制表符
\s // 匹配空白字符
\S // 匹配非空白字符
\b // 匹配单词边界
\B // 匹配非单词边界
\d // 匹配数字字符
\D // 匹配非数字字符
\w // 匹配单词字符
\W // 匹配非单词字符
\u // 匹配Unicode字符转义符可以将特殊字符转义
- 字符集
[字符范围]匹配中文: [\u4e00-\u9FA5]
- 量词
前面的规则出现的次数
* // 匹配0个或多个
+ // 匹配1个或多个
? // 匹配0个或1个
{n}: 匹配n个
{n,}: 匹配>=n个
{n,m}: 匹配n-m个JS中的应用
js中,正则表达式表现为一个对象,该对象是通过构造函数RegExp
创建正则对象
- 字面量模式
- 构造函数模式
js
let reg = /规则字符串/;
let reg = new RegExp('规则字符串');正则实例成员
- global
- ignoreCase
- multiline
- source
- test方法:验证某个字符串是否满足规则
- exec方法:execute,执行匹配,得到匹配结果。
正则表达式,默认情况下,适用贪婪模式 在量词后,加上?,表示进入非贪婪模式
字符串对象中的正则方法
- split
- replace
- search
- match
进阶
捕获组
用小括号包裹的部分叫做捕获组,捕获组会出现在匹配结果中
捕获组可以命名,叫做具名捕获组
非捕获组
反向引用
在正则表达式中,使用某个捕获组,\捕获组编号
正向断言(预查)
检查某个字符后面的字符是否满足某个规则,该规则不成为匹配结果,并且不称为捕获组
负向断言(预查)
检查某个字符后面的字符是否不满足某个规则,该规则不成为匹配结果,并且不称为捕获组