我想验证 5 位或 9 位的邮政编码。我已经写了这个 /^(\d){5|9}$/
,但它不匹配任何东西。
但是当我/^(\d){5}$/
为 5 正确匹配它时。
请帮忙。
以下正则表达式应该可以工作。
^(\d{5}|\d{9})$
使最后四个可选:
^\d{5}(\d{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