什么是正则表达式?
正则表达式(Regular Expression,简称 Regex)是一种用于匹配字符串中字符组合的模式。在编程中,它被广泛用于数据验证(如检查邮箱格式)、搜索、替换和提取信息。
本工具是一个完全运行在客户端的正则测试器,您的数据不会上传到任何服务器,确保隐私安全。它基于 JavaScript 的正则引擎,支持标准的 JS 正则语法。
常用语法速查表
| 字符 | 描述 | 示例 |
|---|---|---|
| ^ | 匹配输入的开始 | ^A |
| $ | 匹配输入的结束 | end$ |
| * | 匹配前一个字符 0 次或多次 | bo* |
| + | 匹配前一个字符 1 次或多次 | bo+ |
| ? | 匹配前一个字符 0 次或 1 次 | e?le |
| . | 匹配除换行符外的任何单个字符 | .n |
| \d | 匹配一个数字字符,等价于 [0-9] | \d+ |
| \w | 匹配字母、数字或下划线 | \w+ |
| \s | 匹配任何空白字符 | \s |
| [abc] | 字符集合,匹配方括号中的任意字符 | [aeiou] |
常见问题 (FAQ)
g, i, m 这些修饰符是什么意思?
- g (Global): 全局匹配,查找所有匹配项,而不仅仅是第一个。
- i (Insensitive): 不区分大小写匹配。
- m (Multiline): 多行匹配,使 ^ 和 $ 能匹配每一行的开始和结束。
如何匹配中文字符?
可以使用 Unicode 范围
[\u4e00-\u9fa5] 来匹配常用的简体和繁体汉字。
贪婪模式和非贪婪模式有什么区别?
正则默认是“贪婪”的,会尽可能多地匹配字符。例如
a.*b 匹配 "aabab" 时会匹配整个字符串。如果在量词后加 ?(如
a.*?b),则变为“非贪婪”,只匹配到第一个 b(即 "aab")。
如何匹配中国手机号?
常用的匹配规则是:
^1[3-9]\d{9}$。这表示以 1 开头,第二位是 3-9 之间的数字,后面跟着 9 个任意数字,总长 11 位。
如何匹配电子邮箱?
一个通用的简单规则是:
^[\w\.-]+@[\w\.-]+\.\w+$。注意这只是为了演示,实际生产环境中验证邮箱可能会更复杂,需符合 RFC 标准。
如何匹配特殊字符(如 . * ?)?
这些是正则的元字符,如果想匹配它们本身,需要用反斜杠
\ 进行转义。例如匹配点号 . 需要写成
\.,匹配问号
? 写成 \?。
什么是零宽断言(Lookaround)?
这是一种不消耗字符的匹配方式。例如
(?=exp) 是正向先行断言,匹配后面跟着 exp 的位置;(?<=exp)
是正向后行断言,匹配前面是 exp 的位置。它们只做判断,不包含在匹配结果中。
如何匹配空白字符?
使用
\s 可以匹配任意空白符,包括空格、制表符、换行符等。如果要匹配多个连续空白,可以使用 \s+。