美国ZIP码正则验证优化:排除以三个0开头的无效格式
美国ZIP码验证正则表达式(排除三位及以上0开头的无效格式)
需求回顾
原有的最简正则(^\d{5}$)|(^\d{5}-\d{4}$)会允许00000、00012、00000-0000这类无效ZIP码,但美国邮政允许前两位为0(如00501),仅需排除以三个及以上0开头的格式。
修正后的正则表达式
^(?!000)\d{5}(?:-\d{4})?$
正则拆解
^:锁定字符串起始位置(?!000):否定前瞻断言,确保接下来的三个字符不是连续的000,直接排除000xx和000xx-xxxx这类无效格式\d{5}:匹配5位数字的基础ZIP码部分(?:-\d{4})?:可选的扩展码部分,?:表示非捕获组(不单独存储匹配结果),?表示这部分可省略;-\d{4}匹配横杠加4位数字$:锁定字符串结束位置
验证示例
- 有效ZIP码(匹配通过):
00501、90210、10001-1234、00501-0000 - 无效ZIP码(匹配失败):
00000、00012、00012-3456、00000-0000
内容的提问来源于stack exchange,提问作者NoBullMan
相关产品推荐
相关产品推荐

