我有正则表达式^\d{5}$|^\d{5}-\d{4}*$"
它检查了US zip。
但我需要检查“zip, zip, zip
”如何做到这一点?
我试过这个^(\d{5}$|^\d{5}-\d{4},)*$
,但它不起作用
答案 0 :(得分:4)
尝试
((^|, )(\d{5}|\d{5}-\d{4}))*$
每个匹配必须以(^|, )
开头,所以在字符串的开头或,
(逗号空格)
请注意,您不应在.NET中使用\d
,因为٠١٢٣٤
是\d
! (在.NET \d
中包含非ASCII Unicode数字)。 [0-9]
通常更好。
答案 1 :(得分:0)
您似乎需要的表达式是:
^\d{5}(|-\d{4})(,\d{5}(|-\d{4}))*$
你试图写的是:
^(\d{5}|\d{5}-\d{4},)*$
但是这需要每个ZIP都有一个尾随的逗号,这是最后一个没有的。
打破给出的答案,
\d{5}(|-\d{4})
是您原作的变体,但只需将-1234选为。(,\d{5}(|-\d{4}))*
是第一个以逗号开头的正则表达式,允许零次或多次。答案 2 :(得分:0)
我会用它来加速:
^\d{5}(?:-\d{4})?(?:,\s*\d{5}(?:-\d{4})?)*$
扩展
^
\d{5}
(?: - \d{4} )?
(?:
, \s* \d{5}
(?: - \d{4} )?
)*
$
这是为了提高速度/灵活性:
^\s*\d{5}(?:\s*-\s*\d{4})?(?:\s*,\s*\d{5}(?:\s*-\s*\d{4})?)*\s*$
扩展
^
\s*
\d{5}
(?: \s* - \s* \d{4} )?
(?:
\s* , \s* \d{5}
(?: \s* - \s* \d{4} )?
)*
\s*
$