RegExp知识点总结 正则表达式是前端开发中的一种强有力的武器,用于匹配字符串。它的设计思想是定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。在 JavaScript 中,正则表达式也是对象,可以通过两种方式创建:字面量创建和构建函数创建。 构建正则表达式 在 JavaScript 中,正则表达式可以通过两种方式创建: 1. 字面量创建:使用斜杠 `/` 将模式括起来,例如 `const re = /\d+/g;` 2. 构建函数创建:使用 `RegExp` 对象的构造函数,例如 `const re = new RegExp("\\d+", "g");` 匹配规则 常见的匹配规则包括: * `^` 匹配输入的开始 * `$` 匹配输入的结束 * `*` 匹配前一个表达式 0 次或多次 * `+` 匹配前面一个表达式 1 次或者多次 * `?` 匹配前面一个表达式 0 次或者 1 次 * `x(?=y)` 匹配 'x' 仅仅当 'x' 后面跟着 'y' * `(?<=y)x` 匹配 'x' 仅当 'x' 前面是 'y' * `x(?!y)` 匹配 'x' 仅当 'x' 后面不跟着 'y' * `(?<!y)x` 匹配 'x' 仅当 'x' 前面不是 'y' * `x|y` 匹配 'x' 或者 'y' * `{n}` 匹配前面一个字符刚好出现了 n 次 * `{n,}` 匹配前面一个字符至少出现了 n 次 * `{n,m}` 匹配前面一个字符至少出现了 n 次,最多出现了 m 次 * `[xyz]` 匹配方括号中的任意字符 * `[^xyz]` 匹配任何没有包含在方括号中的字符 * `\b` 匹配一个词的边界 * `\B` 匹配一个非词边界 * `\d` 匹配一个数字 * `\D` 匹配一个非数字字符 * `\w` 匹配一个单字字符 * `\W` 匹配一个非单字字符 正则表达式标记 正则表达式标记用于修改正则表达式的行为,包括: * `g` 全局搜索 * `i` 不区分大小写搜索 * `m` 多行搜索 * `s` 允许 `.` 匹配换行符 * `u` 使用 Unicode 码的模式进行匹配 * `y` 执行“粘性”搜索 贪婪模式和懒惰模式 贪婪模式会尽可能多地匹配,而懒惰模式会尽可能少地匹配。例如: ``` const reg = /ab{1,3}c/; ``` 在匹配过程中,尝试可能的顺序是从多往少的方向去尝试。首先会尝试 `bbb`,然后再看整个正则是否能匹配。不能匹配时,吐出一个 `b`,即在 `bb` 的基础上,再继续尝试,以此重复。 懒惰模式可以使用问号 `?` 实现,例如: ``` const regex = /(\d{1,3}?)(\d{1,3})/; ``` 分组 分组主要是用过 `()` 实现,可以达到以下效果: * 匹配重复的字符串,例如 `beyond{3}` * 使用 `|` 实现或的效果,例如 `(abc|xyz)` * 捕获组,可以使用 `$` 来引用捕获的组,例如 `str.replace(/(john) (smith)/i, '$2, $1')` 匹配方法 正则表达式常被用于某些方法,我们可以分成两类: * 字符串(str)方法:`match`、`matchAll`、`search`、`replace`、`split` * 正则对象下(regexp)的方法:`test`、`exec` 其中,`exec` 方法返回一个数组(未匹配到则返回 null),`test` 方法返回一个布尔值,表示是否匹配。
- 粉丝: 25
- 资源: 7802
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助