Regex Tester — 实时测试和调试正则表达式
正则表达式 (regex) 是开发人员工具库中最强大的工具之一,也是最神秘的工具之一。一个精心设计的正则表达式可以替代 50 行字符串解析代码。我们的实时测试器可让您构建、测试和理解模式,而无需 IDE 的编辑-保存-运行周期。
正则表达式语法快速参考
| 图案 | 火柴 | 例子 |
|---|---|---|
\\\\d | 任意数字 0–9 | \\\\d{4}比赛 2024 |
\\\\w | 单词字符(字母、数字、_) | \\\\w+匹配“hello_world” |
^ / $ | 字符串的开头/结尾 | ^\\\\d{5}$仅匹配 5 位邮政编码 |
[...] | 集合中的任意字符 | [艾欧]匹配任何元音 |
(?:...) | 非捕获组 | 不保存捕获组的组 |
(?=...) | 积极的前瞻 | \\\\w+(?=\\\\.com)匹配子域 |
5 个值得添加书签的现实世界正则表达式模式
- 电子邮件验证:
/^[\\\\w.-]+@[\\\\w.-]+\\\\.[a-z]{2,}$/i - 美国电话号码:
/^(\\\\+1)?[\\\\s.-]?\\\\(?\\\\d{3}\\\\)?[\\\\s.-]?\\\\d{3}[\\\\s.-]?\\\\d{4}$/ - 网址提取:
/https?:\\\\/\\\\/[^\\\\s"']+/g - 强密码检查:
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)(?=.*[@$!%*?&])[A-Za-z\\\\d@$!%*?&]{8,}$/ - 删除多余的空格:
/\\\\s+/g替换为单个空格
常见问题解答
g、i、m 标志有什么作用?
克(全局):查找所有匹配项,而不仅仅是第一个匹配项。我: 不区分大小写。米(多行): ^ 和 $ 匹配行边界而不是字符串边界。
为什么我的正则表达式在这里可以工作,但在 Python 中却不行?
该测试器使用 JavaScript 的正则表达式引擎。蟒蛇的关于模块有细微的语法差异——值得注意的是,Python 使用(?P<名称>...)对于命名组,而 JavaScript 使用(?<名称>...).
是什么导致灾难性的回溯?
图案如(一+)+应用于长的不匹配字符串会导致指数时间复杂度。在支持它们的引擎中使用原子组或所有格量词,或者重构模式以避免嵌套重复。