[英]How to set repeat regular expression?
我有正则表达式^\\d{5}$|^\\d{5}-\\d{4}*$"
它检查了美国邮政编码。但我需要检查” zip, zip, zip
“如何做到这一点?
我试过这个^(\\d{5}$|^\\d{5}-\\d{4},)*$
但它不起作用
尝试
((^|, )(\d{5}|\d{5}-\d{4}))*$
测试人员: http : //regexr.com?36297
每个匹配必须以(^|, )
开头,所以在字符串的开头或a ,
(逗号空格)
请注意,您不应该在.NET中使用\\d
,因为٠١٢٣٤
是\\d
! (在.NET \\d
包含非ASCII Unicode数字)。 [0-9]
通常更好。
您似乎需要的表达式是:
^\d{5}(|-\d{4})(,\d{5}(|-\d{4}))*$
你试图写的是:
^(\d{5}|\d{5}-\d{4},)*$
但这需要每个ZIP都有一个尾随的逗号,这是最后一个没有的。
打破给出的答案,
\\d{5}(|-\\d{4})
是原始版本的变体,但只需将-1234选为可选项。 (,\\d{5}(|-\\d{4}))*
是第一个以逗号开头的正则表达式,允许零次或多次。 我会用它来加速:
^\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*
$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.