正则表达式冲突电话号码和邮政编码

时间:2016-09-01 05:49:52

标签: regex postal-code

我想从一团文字中提取邮政编码。 我的邮政编码长度为六位数,可以是560011560 011。我使用了正则表达式(/[0-9]{3}[ ]?[0-9]{3}/),但这也捕获了我的电话号码的前6位数字。我尝试在我的6 th 数字之后使用[^0-9],但这也捕获了下一个字符。如何只捕获邮政编码,忽略任何超过6位的数字?

2 个答案:

答案 0 :(得分:0)

我认为您的解决方案是添加字边界。像

/\b[0-9]{3} ?[0-9]{3}\b/

/\b\d{3} ?\d{3}\b/

如果你的正则表达式支持数字字符类。

单词边界 - \b仅匹配前后字符来自不同类,或者更确切地说 - 一个是单词字符类,另一个不是。 单词字符类包含数字,因此在正则表达式之前和之后添加\b,只有在数字前面跟着非数字后才能匹配(单词字符)。

此外,让一个只有一个字符的字符类([ ])没有任何意义。它与正则表达式中的角色一样。

See it here at regex101

答案 1 :(得分:0)

您可以使用括号来捕获前六个数字,忽略后续的非数字:

/([0-9]{3} ?[0-9]{3})[^0-9]/

这匹配123456和123 456但不匹配1234567。