如何设置重复正则表达式
本文关键字:正则表达式 设置 何设置 | 更新日期: 2023-09-27 18:28:32
我有一个正则表达式^'d{5}$|^'d{5}-'d{4}*$"
,它检查了US zip。但我需要检查"zip, zip, zip
"如何做到这一点?
我试过这个^('d{5}$|^'d{5}-'d{4},)*$
,但它不起作用
尝试
((^|, )('d{5}|'d{5}-'d{4}))*$
测试人员:http://regexr.com?36297
每个匹配的前面必须有(^|, )
,因此必须有字符串的开头或,
(逗号空间)
请注意,您不应该在.NET中使用'd
,因为٠١٢٣٤
就是'd
!(在.NET 'd
中包括非ASCII Unicode数字)。CCD_ 10通常较好。
您似乎需要的表达式是:
^'d{5}(|-'d{4})(,'d{5}(|-'d{4}))*$
你试图写的是:
^('d{5}|'d{5}-'d{4},)*$
但这需要每个ZIP都有一个尾随逗号,而最后一个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*
$