gpt4 book ai didi

Java Regex - 排除由连字符附加的 5 位数字

转载 作者:行者123 更新时间:2023-11-30 07:25:13 25 4
gpt4 key购买 nike

我有一个正则表达式 (?:^|[^\w])(\d{5}(?:[-\s]\d{4})?)(?:$|[^\w]).

它正在寻找美国标准 5 位数邮政编码或更长的 5+4 位数版本。

但是,这个特定的正则表达式也匹配以下形式的数字的 5 位数字。

1111-1111111111 匹配。如何排除此类情况?

我尝试将连字符添加到正则表达式开头的排除项中,例如 (?:^|[^\w]|-) ,但没有效果。

最佳答案

请注意,您实际上可以使用

\b(?<!-)\d{5}(?:[- ]\d{4})?(?!-)\b

更短且更具可读性。 (?<!-)消极的lookbehind将确保没有-位于值 (?!-) 之前负向前视将确保没有 -跟随该值,并且 \b字边界将有效取代 (?:^|\W)(?:$|\W)非捕获组。

请参阅regex demo .

关于Java Regex - 排除由连字符附加的 5 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36900845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com