1、什么是正则表达式
正则表达式描述了字符串的“构成模式”,经常被用于检查字符串是否符合预定的格式要求。 正则表达式“按位”描述规则,是指它是一位一位的描述字符串的构成形式。比如检查字符串是这样的:以字母m开头,然后是3个数字,最后以字母n结尾,那么正则表达式就是:/^m\d{3}n$\
2、创建正则表达式的两种方式
创建正则表达式有两种方法:一种是字面量,格式是写在/ /中,另一种是用构造方法,里面写字符串或者是字符串的变量。
3、元字符
元字符是指一位指定类型的字符。
| 元字符 | 功能 |
|---|---|
| \d | 匹配一个数字 |
| \D | 匹配一个非数字字符 |
| \w | 匹配一个单字字符(字母、数字或者下划线) |
| \W | 匹配一个非单字字符 |
| \s | 匹配一个空白字符,包括空格、制表符和换行符 |
| . | 任意字符 |
| 匹配开头 | |
| $ | 匹配结尾 |
元字符注意事项: 如果使用new RegExp()写法,反斜杠需要多写一个;
字符的转义: (1)在特殊字符之前的反斜杠\表示下一个字符不是特殊字符,应该按照字面理解; (2)不管一个符合有没有特殊意义,都可以在其之前加上一个\以确保它表达的是这个符号本身;
4、方括号表示法
(1)使用方括号,比如[XYZ],可以创建一个字符集合,表示匹配方括号中的任意字符。 (2)可以使用短横-来指定一个字符范围,^表示否定;
| 元字符 | 等价的方括号表示法 |
|---|---|
| \d | [0-9] |
| \D | [^0-9] |
| \w | [a-zA-Z0-9_] |
| \W | [^a-zA-Z0-9_] |
5、量词
| 量词 | 意义 |
|---|---|
| * | 匹配前一个表达式0次或多次。等价于{0,} |
| + | 匹配前一个表达式1次或多次。等价于{1,} |
| ? | 匹配前一个表达式0次或1次。等价于{0,1} |
| {n} | n是一个正整数,匹配了前面一个字符刚好出现了n次 |
| {n,} | n是一个正整数,匹配了前面一个字符至少出现了n次 |
| {n,m} | n是一个正整数,匹配了前面一个字符至少出现了n次,最多m次 |
6、修饰符
修饰符也叫做标志(flags),用于使用正则表达式实现高级搜索。
| 修饰符 | 意义 |
|---|---|
| i | 不区分大小写搜索 |
| g | 全局搜索 |
修饰符的使用:
let re = /m/gi;
let re1 = new RegExp('m','gi');
7、正则表达式的相关方法
| 方法 | 意义 |
|---|---|
| test() | 测试某字符串是否匹配正则表达式,返回布尔值 |
| exec() | 根据正则表达式,在字符串中进行查找,返回结果数组或者null |
| exec()方法的逐条遍历:exec()方法最有趣的是,有“g”修饰符的正则表达式将自动成为“有状态的”,这意味着可以对单个字符串中的多次匹配结果进行逐条的遍历; | |
| 使用循环语句来循环执行exec,寻找所有的匹配结果; | |
| 实践中会加“g”修饰符,下面这种方式很常用: |
let str = "abc123def456ghi789";
let regexp = /\d+/g;
let result;
while ((result = regexp.exec(str))) {
console.log(result);
}
8、元字符|
(1)正则中使用竖线|表示或,表示只匹配指定几项之间的一项; (2)x|y表示匹配x或y,也就是说两种中匹配一个,只要匹配到其中一个,就不会再匹配另外一个了;
let str1 = "imoochtmlcccjs"
let str2 = "jsimooccss"
let str3 = "cssimoochtml"
let reg = /html|css|js/
console.log(reg.exec(str1)) // html
console.log(reg.exec(str2)) // js
console.log(reg.exec(str3)) // css
9、字符串的相关方法(哪些方法可以使用正则表达式)
| 方法 | 简介 |
|---|---|
| search() | 在字符串中根据正则表达式进行查找匹配,返回首次匹配到的位置索引,测试不到则返回-1 |
| match() | 在字符串中根据正则表达式进行查找匹配,返回一个数组,找不到则返回null |
| replace() | 使用替换字符串替换掉匹配到的子字符串,可以使用正则表达式 |
| split() | 分隔字符串为数组,可以使用正则表达式 |