3

我想验证 5 位或 9 位的邮政编码。我已经写了这个 /^(\d){5|9}$/,但它不匹配任何东西。

但是当我/^(\d){5}$/为 5 正确匹配它时。

请帮忙。

4

3 回答 3

6

以下正则表达式应该可以工作。

^(\d{5}|\d{9})$
于 2012-06-07T13:14:05.150 回答
6

使最后四个可选:

^\d{5}(\d{4})?$

请注意,我删除了开/关斜杠,因为它们与正则表达式无关;它们是应用程序语言的产物。

于 2012-06-07T13:14:20.887 回答
1

匹配 USPS ZIP+4

如果您处理的是 US Postal Service 的 ZIP+4 格式,则此正则表达式可能会提供更准确的匹配:

egrep -o '\b[[:digit:]]{5}-?[[:digit:]]{4}?\b'

语料库

这个正则表达式针对有限的语料库进行了测试。你的旅费可能会改变。

cat << EOF | egrep -o '\b[[:digit:]]{5}-?[[:digit:]]{4}?\b'
    12345
    123456789
    12345-6789
EOF
于 2012-06-07T18:12:09.077 回答