【发布时间】:2016-05-09 16:43:56
【问题描述】:
我需要验证一个瑞典邮政编码,它必须是 6 个字符长。第 4 个字符必须有空格。
一个例子是 114 55
我知道我可以使用^[a-zA-Z]{6}$ 验证长度为 6,但我可以验证第 4 个字符是空格并验证长度吗?
这必须是正则表达式,因为它存储在解析的 xml 文件中
我正在查看提供的正则表达式以及其他一些解决方案,并且大部分情况下它都有效。
我现在看到我需要验证 11455 或 114 55,但我无法验证 11455-9085 或 11455 6625。
我正在使用正则表达式^\d{5}|(\d{3}\s\d{2})$,但它也认为最后两个是有效的,我该如何排除这个?
对此进行更多研究,我有一个无法解决的案例。如果邮政编码输入为 60922-62264,则最后 5 位数字被识别为有效。
我的正则表达式是(\d{5}$)|(\d{3}\s\d{2}$),它适用于所有情况,除了刚才提到的情况。
有什么建议吗?
【问题讨论】:
-
^[a-zA-Z]{3} [a-zA-Z]{2}$。对于数字使用\d -
^\d{3} \d{2}$是 4 位数字,空格,3 位数字,如果那是你的后缀 -
@AlexK。我会假设:
^\d{3}\s\d{2}$。您提供的正则表达式执行 4,空格和 3 而不是 3,空格和 2... 这也适用:\d{3}\s\d{2}regex101.com/r/aJ0yO8/1 -
请注意,
\d匹配“许多其他字符集的十进制数字” - Character Classes in Regular Expressions,例如٣,除非您指定符合 ECMAScript 的行为,因此它等同于[0-9]。 -
我一直在努力解决这个问题,我有一个测试用例我不知道是否有人想试一试让我知道