【问题标题】:Regex Check Char Location正则表达式检查字符位置
【发布时间】: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]
  • 我一直在努力解决这个问题,我有一个测试用例我不知道是否有人想试一试让我知道

标签: regex xml vb.net


【解决方案1】:

虽然我学习正则表达式很有趣,但我有一个截止日期,我决定用谷歌搜索正则表达式来验证瑞典的邮政编码,我发现了这个

^(s-|S-){0,1}[0-9]{3}\s?[0-9]{2}$

到目前为止,这在每种情况下都有效!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    相关资源
    最近更新 更多