【问题标题】:6 digits regular expression6位正则表达式
【发布时间】:2011-06-13 02:31:59
【问题描述】:

我需要一个至少需要一位数字且最多六位的正则表达式。

我已经解决了这个问题,但它们似乎都不起作用。

^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$

^[0-999999]$

还有什么建议吗?

【问题讨论】:

    标签: regex vb.net


    【解决方案1】:

    ^[0-9]{1,6}$ 应该这样做。我不知道 VB.NET 是否足够好,不知道那里是否相同。

    例如,看看Wikipedia

    【讨论】:

    • 你错过了结束锚点。
    【解决方案2】:

    您可以使用范围限定符{min,max} 指定最少 1 位数和最多 6 位数:

    ^[0-9]{1,6}$
    

    解释:

    ^     : Start anchor
    [0-9] : Character class to match one of the 10 digits
    {1,6} : Range quantifier. Minimum 1 repetition and maximum 6.
    $     : End anchor
    

    为什么你的正则表达式不起作用?

    你几乎接近正则表达式:

    ^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$
    

    由于您已通过在 \ 前面添加 ? 来逃脱它,因此 ? 不再充当正则表达式元字符(对于 01 重复),而是按字面意思对待.

    要修复它,只需删除 \ 即可。

    See it on rubular.

    基于量词的正则表达式更短、更易读,并且可以轻松扩展到任意位数。

    你的第二个正则表达式:

    ^[0-999999]$
    

    相当于:

    ^[0-9]$
    

    匹配只有一位数字的字符串。它们是等价的,因为字符类 [aaaab][ab] 相同。

    【讨论】:

    • 正如标题所暗示的,可以添加注释,以匹配 6 位数字,应使用 [0-9]{6},并在需要时添加锚点。
    【解决方案3】:
      ^\d{1,6}$
    

    ........

    【讨论】:

    • 短而甜美。我使用这个 \d{7,7} 的变体和 Notepad++ 的 TextFX 查找/替换功能来获取文件中的所有 7 位数字。非常感谢您引导我找到所需的解决方案。
    • 由于\d[0-9] 并不总是相同的(see this post)^[0-9]{1,6}$ 解决方案可能更可取。
    • 简单有效。
    【解决方案4】:

    你可以试试

    ^[0-9]{1,6}$
    

    它应该可以工作。

    【讨论】:

      【解决方案5】:
      \b\d{1,6}\b
      

      解释

      \b    # word boundary - start
      \d    # any digits between 0 to 9 (inclusive)
      {1,6} # length - min 1 digit or max 6 digits
      \b    # word boundary - end
      

      【讨论】:

        【解决方案6】:
        /^[0-9][0-9][0-9][0-9]$/
        

        仅输入 4 位数字

        【讨论】:

        • 该问题专门要求验证 1 到 6 位数字之间的数字。你能解释一下你的答案如何帮助解决这个问题吗?请注意,这里已经有几个答案已经 10 年了,请确保如果您发布一个新答案,您实际上添加了现有帖子中缺少的内容。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        • 2023-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多