我需要为加拿大和美国的邮政编码创建一个正则表达式,但邮政编码必须从10000开始并转到99999,我已经尝试了各种配置,但它不会为拉链工作代码从10000开始,不确定我做错了什么。任何帮助将不胜感激。
' ^ [AZ] [0-9] [AZ] - [0-9] [AZ] [0-9] $ |(^ [1-9] {5}([O-? 9] {4})$)&#39?;
答案 0 :(得分:2)
你写了
[1-9]{5}(?[0-9]{4})?
问号对你没有帮助。
波士顿以及许多其他地方都有从零开始的格式良好的ZIP。但假设你真的想要排除它们,那么只需坚持正确的初始数字,然后再加上四个不受限制的数字:
[1-9][0-9]{4}
(请注意,ZIP + 4似乎超出了问题陈述的范围。)
答案 1 :(得分:2)
您有[1-9]{5}
,只接受以五个非零数字字符开头的邮政编码。 10000
有零,因此与模式不匹配。根据您对前导非零数字的要求,您想要的是为单个字符匹配[1-9]
,然后为接下来的4个字符匹配[0-9]
(或\d
):
US:
^[1-9]\d{4}([ -]?\d{4})?$
^[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][ -]?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]$
两者在一起:
^[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][ -]?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]$|^[1-9]\d{4}([ -]\d{4})?$