我想从一团文字中提取邮政编码。
我的邮政编码长度为六位数,可以是560011
或560 011
。我使用了正则表达式(/[0-9]{3}[ ]?[0-9]{3}/
),但这也捕获了我的电话号码的前6位数字。我尝试在我的6 th 数字之后使用[^0-9]
,但这也捕获了下一个字符。如何只捕获邮政编码,忽略任何超过6位的数字?
答案 0 :(得分:0)
我认为您的解决方案是添加字边界。像
/\b[0-9]{3} ?[0-9]{3}\b/
或
/\b\d{3} ?\d{3}\b/
如果你的正则表达式支持数字字符类。
单词边界 - \b
仅匹配前后字符来自不同类,或者更确切地说 - 一个是单词字符类,另一个不是。 单词字符类包含数字,因此在正则表达式之前和之后添加\b
,只有在数字前面跟着非数字后才能匹配(单词字符)。
此外,让一个只有一个字符的字符类([ ]
)没有任何意义。它与正则表达式中的角色一样。
答案 1 :(得分:0)
您可以使用括号来捕获前六个数字,忽略后续的非数字:
/([0-9]{3} ?[0-9]{3})[^0-9]/
这匹配123456和123 456但不匹配1234567。