点击示例可直接在可视化器中查看,我们提供了常见的使用场景分类。
这些高级功能可以帮助你更深入地理解和应用正则表达式。
逐步查看正则表达式的匹配过程,了解每个部分如何工作。
点击"开始调试"来分析正则表达式的匹配过程
根据描述自动生成正则表达式,无需记忆复杂语法。
选择一个模式并点击"生成正则表达式"
使用正则表达式执行强大的文本替换操作。
当前正则表达式将匹配组1,并与组2一起格式化
分析正则表达式的执行性能和优化建议。
点击"执行性能分析"来评估正则表达式的效率
| 符号 | 说明 | 示例 |
|---|---|---|
| . | 匹配除换行符以外的任意字符 | a.c 匹配 "abc", "adc" 等 |
| \d | 匹配数字,等价于 [0-9] | \d{3} 匹配 "123", "456" 等 |
| \D | 匹配非数字,等价于 [^0-9] | \D+ 匹配 "abc", "xyz" 等 |
| \w | 匹配字母、数字、下划线,等价于 [A-Za-z0-9_] | \w+ 匹配 "abc123", "test_123" 等 |
| \W | 匹配非字母、数字、下划线,等价于 [^A-Za-z0-9_] | \W+ 匹配 "!@#", "%-=" 等 |
| \s | 匹配任意空白字符,包括空格、制表符、换行符 | a\sb 匹配 "a b", "a\tb" 等 |
| \S | 匹配非空白字符 | \S+ 匹配任何非空白字符序列 |
| \b | 匹配单词边界 | \bword\b 匹配完整单词 "word" |
| \B | 匹配非单词边界 | \Bword 匹配 "keyword" 中的 "word" |
| 符号 | 说明 | 示例 |
|---|---|---|
| * | 匹配前面的表达式 0 次或多次 | a* 匹配 "", "a", "aa", "aaa" 等 |
| + | 匹配前面的表达式 1 次或多次 | a+ 匹配 "a", "aa", "aaa" 等 |
| ? | 匹配前面的表达式 0 次或 1 次 | colou?r 匹配 "color" 和 "colour" |
| {n} | 匹配前面的表达式恰好 n 次 | a{3} 匹配 "aaa" |
| {n,} | 匹配前面的表达式至少 n 次 | a{2,} 匹配 "aa", "aaa" 等 |
| {n,m} | 匹配前面的表达式 n 到 m 次 | a{1,3} 匹配 "a", "aa", "aaa" |
| ^ | 匹配字符串开始位置 | ^abc 匹配以 "abc" 开头的字符串 |
| $ | 匹配字符串结束位置 | abc$ 匹配以 "abc" 结尾的字符串 |
| 符号 | 说明 | 示例 |
|---|---|---|
| | | 或运算符,匹配 | 前或后的表达式 | cat|dog 匹配 "cat" 或 "dog" |
| () | 分组,将括号内的表达式视为一个整体 | (ab)+ 匹配 "ab", "abab", "ababab" 等 |
| (?:) | 非捕获分组,不创建反向引用 | (?:ab)+ 类似 (ab)+,但不捕获匹配 |
| [abc] | 字符集,匹配方括号中的任意字符 | [aeiou] 匹配任何元音字母 |
| [^abc] | 反向字符集,匹配不在方括号中的任意字符 | [^0-9] 匹配任何非数字字符 |
| (?=) | 正向先行断言,匹配后面跟着括号内表达式的位置 | a(?=b) 匹配后面跟着 "b" 的 "a" |
| (?!) | 负向先行断言,匹配后面不跟着括号内表达式的位置 | a(?!b) 匹配后面不跟着 "b" 的 "a" |
| (?<=)< /td> | 正向后行断言,匹配前面跟着括号内表达式的位置 | (?<=a)b 匹配前面有 "a" 的 "b" |
| (? | 负向后行断言,匹配前面不跟着括号内表达式的位置 | (? 匹配前面没有 "a" 的 "b" |
| 标志 | 说明 | 示例 |
|---|---|---|
| g | 全局匹配,找到所有匹配项而非在第一个匹配后停止 | /a/g 匹配所有 "a" |
| i | 忽略大小写匹配 | /a/i 匹配 "a" 和 "A" |
| m | 多行匹配,^ 和 $ 分别匹配每行的开头和结尾 | /^a/m 匹配每行开头的 "a" |
| s | 使 . 匹配包括换行符在内的所有字符 | /a.b/s 匹配 "a\nb" |
| u | 启用 Unicode 匹配 | /\u{1F600}/u 匹配 Unicode 表情符号 |
| y | 执行"粘性"搜索,匹配从目标字符串的当前位置开始 | /b/y 只在索引处匹配 "b" |
(?:) 代替捕获分组 (),当不需要引用匹配内容时.* 这样的贪婪匹配,尤其在大文本中,可以使用 .*? 非贪婪匹配代替\d 代替 [0-9])提高可读性(?=), (?!))来创建复杂条件,而不增加匹配组{2,4})代替泛泛的 + 或
*,提高效率
^, $, \b)能显著提高匹配效率,限定搜索范围1. 在输入框中输入正则表达式
2. 点击"可视化"按钮生成图形化表示
3. 在测试文本框中输入文本,查看匹配结果
正则表达式是用于匹配字符串中字符组合的模式。它由以下几个部分组成:
下面的链接包含了当前的正则表达式和选项设置: