我想找到潜在的美国邮政编码,它是一个由5个数字组成的字符串,如12345或90210。当前的正则表达式使用交替得到长度1-4的数字,然后得到长度6+的数目。有没有更好的方法来做这件事--得到“除5以外的所有长度”的数字?
12345
90210
^(?:[0-9]{0,4}|[0-9]{6,})$
发布于 2021-03-06 21:53:31
您可以使用
^(?!\d{5}$)\d+$
见regex演示和正则图
Regex详细信息
^
(?!\d{5}$)
\d+
$
如果要将数字在较长的文本中作为单独的匹配匹配,则可以考虑使用word或数字,甚至空格边界:
\b(?!\d{5}\b)\d+ // word boundaries (?<!\d)(?!\d{5}(?!\d))\d+ // digit boundaries (?<!\S)(?!\d{5}(?!\S))\d+ // whitespace boundaries
https://stackoverflow.com/questions/66510961
相似问题