正则表达式测试
实时测试 JavaScript 风格的正则。输入即匹配,高亮所有命中,列出捕获组(含命名)。 可切换 i / g / m / s / u 标志,附常用模式速查表。所有处理本地完成。
使用说明 / 常见问题
支持哪种正则方言
JavaScript 内置的 RegExp。和 PCRE / Python re 大部分语法兼容,但有差异:
- JS 不支持 lookbehind 的可变长度(v2018 已部分支持)
- JS 不支持递归引用(
(?R)) - JS 用
(?<name>...)表示命名分组
标志含义速查
i:大小写不敏感g:全局匹配(找所有命中,不是只找第一个)m:多行模式,^/$匹配每行的开头 / 结尾s:dotall,.也匹配换行符u:Unicode 模式,正确处理代理对(emoji 等)
常用模式速查
- 邮箱(粗略):
\\b[\\w.+-]+@[\\w-]+\\.[\\w.-]+\\b - 中国大陆手机:
1[3-9]\\d{9} - URL:
https?://[\\w.-]+(?:/[\\w%./?=&-]*)? - IPv4:
\\b(?:\\d{1,3}\\.){3}\\d{1,3}\\b - 日期 YYYY-MM-DD:
\\d{4}-\\d{2}-\\d{2}
为什么我的正则报错"Invalid escape"
JS 正则字面量里 \\(反斜杠)要写成 \\\\。
但如果你是在输入框里直接输入,不要双写——
浏览器输入的 \\d 就是 \\d,不需要再加反斜杠。
报"Invalid escape"通常是用了不存在的转义字符(如 \\q)。