我想验证5位数或9位数的邮政编码。
我写过这个/^(\d){5|9}$/
,但它不匹配。
但是当我给/^(\d){5}$/
正确匹配5时。
请帮忙。
答案 0 :(得分:6)
以下正则表达式应该有效。
^(\d{5}|\d{9})$
答案 1 :(得分:6)
最后四个可选:
^\d{5}(\d{4})?$
请注意,我删除了开始/结束斜杠,因为它们与正则表达式没有任何关系;它们是一种应用语言艺术品。
答案 2 :(得分:1)
如果您正在处理美国邮政服务的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