正则表达式检查数字长度

时间:2012-06-07 13:12:32

标签: regex

我想验证5位数或9位数的邮政编码。 我写过这个/^(\d){5|9}$/,但它不匹配。

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

请帮忙。

3 个答案:

答案 0 :(得分:6)

以下正则表达式应该有效。

^(\d{5}|\d{9})$

答案 1 :(得分:6)

最后四个可选:

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

请注意,我删除了开始/结束斜杠,因为它们与正则表达式没有任何关系;它们是一种应用语言艺术品。

答案 2 :(得分:1)

匹配USPS ZIP + 4

如果您正在处理美国邮政服务的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