正则表达式如何匹配不符合3位数字-横杠-4位数字格式的内容
错误写法问题点
之前写的^(?!(\d{3}-\d{4}))无法生效的核心原因有两个:
- 负向预查逻辑缺少字符串结束锚点
$,无法判定整行内容是否严格匹配3位数字-4位数字的格式 - 断言仅做位置合法性校验,没有配置实际的内容匹配规则,无法返回有效匹配结果
正确正则实现
匹配所有不符合xxx-xxxx(x为数字)整行格式内容的正则如下:
^(?!^\d{3}-\d{4}$).+$
各段规则的作用:
^:锚定字符串起始位置(?!^\d{3}-\d{4}$):负向先行断言,校验从字符串开头到结尾的完整内容,不是严格的3位数字+横杠+4位数字结构.+:通过前面的格式校验后,匹配整行全部内容作为结果返回
测试验证结果
针对给出的号码列表,实际匹配表现:
123-4567:完全符合目标格式,不触发匹配NOW-4-WAX:包含字母、分段长度不符合规则,正常匹配12 345 67 89:分隔符为空格、数字分段不符合规则,正常匹配
内容的提问来源于stack exchange,提问作者user8314628
相关产品推荐
相关产品推荐

