繁体   English   中英

如何设置重复正则表达式?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM