遇到正则不会写,直接搜索一整段表达式复制过来,常常只能解决眼前一个样本。下一次数据多一个空格或换行,就不知道该改哪里。速查表更适合用来理解每一部分的职责,再组合成自己的规则。

先分清“是什么字符”和“出现多少次”
XunL 正则表达式速查表将字符类、位置、数量、分组、断言、转义和替换语法放在一页,并可插入上方测试器。初学时先用很短的文本,例如A12、B003与没有数字的单词,观察数字字符类和数量条件如何改变结果。
不要同时加入很多概念。先确认单个字符类选中了什么,再加一到多次等量词;需要整行符合时,才继续考虑起止边界。这样出现偏差时能知道是哪一步扩大或缩小了范围。
贪婪不是错误,关键是目标范围
在文本 x1y x2y 中,x.*y 会尽量延伸到后面的y,而 x.*?y 更倾向在较早位置结束。两种写法都可能正确,取决于你要整个片段还是逐个项目。
全局标志又是另一个问题:它关系到是否继续寻找后续匹配,不等于把量词改为非贪婪。把两者分开试,能避免看到结果数量不对时只在问号和g之间盲目切换。
解析结构化内容时,也应考虑是否存在更合适的解析器。复杂HTML或嵌套数据通常不宜只靠一个宽泛点号规则处理,速查符号不应该成为忽略结构的理由。
分组与命名,让替换更容易核对
日期样本适合练习年、月、日分组。先看每个组捕获的内容,再切替换或列表模式,按需要引用。命名组可以改善可读性,但不同语言的命名和替换形式有差异,不能只复制浏览器表达式就认为到处相同。
默认日期示例限制了月日的基本范围,也仍不能完整验证闰年和每月实际天数。正则适合识别形状,真正日期应继续用日期库或业务逻辑验证。测试中加入十三月、空白与缺失字段,有助于看清规则边界。
把速查结果沉淀成自己的样本集
点号不总能表达“任意内容”的业务意图。若只允许字母、数字与短横线,就应明确字符集合;允许换行时再检查对应标志。把不允许的内容排除在规则设计里,比匹配完成后再手工清理更容易复核。
每条规则至少保留几类文本:应匹配、不得匹配、边界和缺失值。改动量词或标志后重新检查这些样本,才能发现旧规则意外变宽。对批量替换,还应保留完整原文和输出数量,不直接覆盖唯一副本。
本页测试采用JavaScript语法,匹配在独立线程并受超时保护。Go等运行时对断言和反向引用的支持不同,多语言代码面板可以提供方向,最后仍应在目标环境运行同一批样本。
如果表达式在长文本中超时,先检查模式是否导致大量回溯,而不是把工具当作坏了。更明确的字符范围、适当边界和较少嵌套通常更容易维护,短小也不应成为唯一目标。
记不住所有符号,是不是学不会正则?
无需一次记全。掌握字符、数量、边界与分组的基本关系,再借速查表验证具体写法,通常比背一份没有样本的大全更实用。
常用邮箱规则能证明邮箱存在吗?
不能。格式匹配只检查字符串结构,真实地址、归属和投递能力需要另外核验。表单规则也应避免过度严格,误拒合法但不常见的写法。
个人微信:ssevening

