正则表达式语法
正则表达式
正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来
语法
使用new RegExp()创建一个正则表达式,RegExp有两个参数
const reg = new RegExp()
方括号
|: 或者[]: 中括号中的内容也是或的关系[a-z]: 任意小写字母[A-Z]: 任意大写字母[A-z]: 任意字母[^ ]: 在中括号中加^表示是否存在除了中括号以内的内容[0-9]: 任意数字
元字符
.: 查找单个字符,除了换行和结束符\w: 查找任意字母、数字、下划线[A-z0-9_]\W: 查找除了字母、数字、下划线的内容[^A-z0-9_]\d: 查找数字[0-9]\D: 查找非数字字符[^0-9]\s: 查找空白字符\S: 查找非空白字符\b: 匹配单词边界\B: 匹配非单词边界\0: 查找NUL字符\f: 查找换页符\r: 查找回车符\t: 查找制表符\v: 查找垂直制表符\xxx: 查找以八进制数 xxx 规定的字符\xdd: 查找以十六进制数 dd 规定的字符\uxxxx: 查找以十六进制数 xxxx 规定的 Unicode 字符
量词
通过量词可以设置一个内容出现的次数,量词只对最近的一个单位生效
{n}: 正好出现n次{n,m}: 出现n-m次{n,}: 出现n次以上+: 至少一个,相当于{1,}*: 任意数量,包括0,相当于{0,}?: 0或1个,相当于{0,1}^n: 用于匹配的字符串开头必须为nn$: 用于匹配的字符串结尾必须为n?=n: 匹配任何其后紧接指定字符串n的字符串?!n: 匹配任何其后没有紧接指定字符串n的字符串
匹配模式
i: 忽略大小写g: 全局匹配模式m: 执行多行匹配
转义字符
\: 所有以单个字符为单位的关键字,需要进行匹配时,都需要使用\进行转义
字面量创建
使用两个/标识正则表达式的开头与结尾,语法为/正则表达式/匹配模式
const reg = /a/i
方法
正则表达式内置的方法
test()
使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false
split()
根据正则表达式所匹配的字符将字符串进行切割,split()方法不管指不指定全局匹配,都会进行全局匹配切割
search()
搜索字符串中是否含有指定内容,如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1,search()只会查找第一个,即使设置为全局匹配模式
match()
可以根据正则表达式,从一个字符串中将符合条件的内容提取出来,默认情况下match()只会找到第一个符合要求的内容,找到之后就会停止检索,我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容;match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果
replace()
可以将字符串中指定内容替换为新的内容
语法: stringObject.replace(regexp/substr, replacement)
| 参数 | 描述 |
|---|---|
| regexp/substr | 必需,规定子字符串或要替换的模式的 RegExp 对象,如果该值是一个字符串,优先用于文本匹配,而不是被识别为 RegExp 对象 |
| replacement | 必需,一个字符串值,规定了替换文本或生成替换文本的函数 |
返回值
一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。
说明
字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。
| 字符 | 替换文本 |
|---|---|
| $1、$2、...、$99 | 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。 |
| $& | 与 regexp 相匹配的子串。 |
| $` | 位于匹配子串左侧的文本。 |
| $' | 位于匹配子串右侧的文本。 |
| $$ | 直接量符号。 |
子表达式: 在大部分场景中,子表达式表示以
()包裹的内容,每一对单独的()所匹配上的内容,在replacement中都可以使用对应顺序的 $? 表示
注意: ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。

浙公网安备 33010602011771号