匹配结果 (3)
- [0] hello
- [6] world
- [12] 123
在本地执行,请勿粘贴敏感信息;复杂正则请注意回溯性能。
常用对照(JavaScript RegExp)
字符类与转义
| 写法 | 含义 |
|---|
| . | 除换行外任意字符;加 s 后 . 也匹配换行 |
| \d | 数字,等价 [0-9] |
| \D | 非数字 |
| \w | 单词字符(字母、数字、下划线等,与 u 有关) |
| \W | 非单词字符 |
| \s | 空白(空格、制表、换行等) |
| \S | 非空白 |
| \t / \n / \r | 制表 / 换行 / 回车 |
| \\ | 转义反斜杠 |
| \. | 转义后匹配字面 . |
| [abc] | 字符集,匹配其一 |
| [^a] | 否定字符集,除 a 外 |
| [a-z] | 范围:小写字母 |
| \u{1F600} | Unicode 码点(u 标志) |
量词
| 写法 | 含义 |
|---|
| * | 0 次或多次(贪婪) |
| + | 1 次或多次(贪婪) |
| ? | 0 或 1 次 |
| {n} | 恰好 n 次 |
| {n,} | 至少 n 次 |
| {n,m} | n 到 m 次 |
| *? | 非贪婪:尽量少匹配 |
| +? | 非贪婪 + |
| ?? | 非贪婪 ? |
位置锚点
| 写法 | 含义 |
|---|
| ^ | 开头;m 时还为每行行首 |
| $ | 结尾;m 时还为每行行尾 |
| \b | 单词边界 |
| \B | 非单词边界 |
| ^ / $ | JavaScript 无 \A、\Z;用 ^、$ 与 m 区分字符串与行 |
分组与断言
| 写法 | 含义 |
|---|
| | | 或,优先级最低 |
| (…) | 捕获组,结果在 $1、$2… |
| (?:…) | 非捕获组,仅分组 |
| (?<name>…) | 命名捕获组 |
| (?=…) | 正向先行断言 |
| (?!…) | 否定先行断言 |
| (?<=…) | 正向后行断言 |
| (?<!…) | 否定后行断言 |
标志位(与本页按钮一致)
| 写法 | 含义 |
|---|
| g | 全局匹配,多次 exec / 本页列出多次 |
| i | 忽略大小写 |
| m | 多行模式,^ $ 按行 |
| s | dotAll,. 含换行 |
| u | Unicode 模式,正确处理码点与属性类 |
| y | sticky,从 lastIndex 起粘滞匹配 |
后行断言 (?<=) / (?<!) 需 ES2018+;Unicode 与 \w、\b 等在 u 下语义更贴近 Unicode。