📅  最后修改于: 2023-12-03 15:26:52.432000             🧑  作者: Mango
正则表达式是一种用于描述和匹配字符串模式的方法。在 Javascript 中,我们可以使用内置的 RegExp 对象来创建和使用正则表达式。在 Javascript 中,所有的正则表达式都以 /
开头和结尾,例如:
// 匹配一个字符串中的所有数字
const regex = /\d+/g;
上述代码中,/
开头和结尾的内容就是一个正则表达式,其中 \d+
表示匹配一个或多个数字,g
表示全局匹配。
除了直接使用 /
开头和结尾的方式来创建正则表达式外,我们还可以使用 RegExp 对象来创建正则表达式,例如:
// 和上述代码等价的正则表达式
const regex = new RegExp("\\d+", "g");
上述代码中,使用了 new RegExp()
创建了一个正则表达式对象,其中第一个参数是字符串形式的正则表达式,需要使用 \\
转义每个反斜杠,第二个参数则是修饰符,也可以用 /
开头和结尾来表示修饰符,例如 /g/i
。
接下来,我们将介绍正则表达式的常见用法:
使用正则表达式可以匹配单个字符,其中一些特殊字符具有特定的含义,例如,.
表示任意字符,[abc]
表示匹配 a
或 b
或 c
中的任意一个字符,\d
表示匹配数字等。
以下是一些常见的用法:
| 正则表达式 | 匹配 |
| --- | --- |
| .
| 任意字符 |
| \d
| 数字 |
| \w
| 字母、数字、下划线 |
| \s
| 空格、制表符、换行符等空白字符 |
| [abc]
| a
或 b
或 c
中的任意一个字符 |
| [^abc]
| 除了 a
、b
、c
外的任意一个字符 |
使用正则表达式可以匹配重复字符,其中一些特殊字符具有特定的含义,例如,*
表示匹配零个或多个重复字符,+
表示匹配一个或多个重复字符,?
表示匹配零个或一个重复字符,{n}
表示匹配 n 个重复字符,{n,}
表示匹配至少 n 个重复字符,{n,m}
表示匹配 n 到 m 个重复字符等。
以下是一些常见的用法:
| 正则表达式 | 匹配 |
| --- | --- |
| *
| 零个或多个重复字符 |
| +
| 一个或多个重复字符 |
| ?
| 零个或一个重复字符 |
| {n}
| n 个重复字符 |
| {n,}
| 至少 n 个重复字符 |
| {n,m}
| n 到 m 个重复字符 |
使用正则表达式可以匹配位置,其中一些特殊字符具有特定的含义,例如,^
表示匹配行首位置,$
表示匹配行尾位置,\b
表示匹配单词边界位置,\B
表示匹配非单词边界位置等。
以下是一些常见的用法:
| 正则表达式 | 匹配 |
| --- | --- |
| ^
| 行首位置 |
| $
| 行尾位置 |
| \b
| 单词边界位置 |
| \B
| 非单词边界位置 |
使用正则表达式可以捕获分组,其中用 ()
括起来的正则表达式被视为一个分组,可以使用 $1
、$2
等来引用分组中匹配到的内容,例如,(a)(b)
表示匹配 ab
,同时分别捕获 a
和 b
。
以下是一些常见的用法:
| 正则表达式 | 匹配 |
| --- | --- |
| (abc)
| 匹配 abc
,同时捕获 abc
|
| (a(b)c)
| 匹配 abc
,同时捕获 ab
和 b
|
| a(?:b)c
| 匹配 abc
,但不捕获 b
|
使用正则表达式可以使用零宽断言,其中一些特殊字符具有特定的含义,例如,(?=pattern)
表示匹配位置为 pattern 的前面,但不包含 pattern,(?!pattern)
表示匹配位置为非 pattern 的前面。
以下是一些常见的用法:
| 正则表达式 | 匹配 |
| --- | --- |
| x(?=y)
| 匹配 x
,仅当 x
后面紧跟着 y
时 |
| x(?!y)
| 匹配 x
,仅当 x
后面不紧跟着 y
时 |
以上是正则表达式的一些常见用法,更多用法可以参见 MDN 文档。