【问题标题】:Regular expression for unique number.唯一编号的正则表达式。
【发布时间】:2016-02-27 17:41:06
【问题描述】:

我需要一个验证唯一值的正则表达式。它有一个唯一的 9 位数字,格式为 000000000A(其中 0 是数字,A 是字母)。最后一个字符串只允许字母“V”或“X”。

我可以为数字做,但不确定如何修改最后一个字符串。

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

希望有人可以帮助我。

【问题讨论】:

    标签: javascript php regex


    【解决方案1】:

    您可以使用字符类[VX],它将匹配其中的单个字符。

    ^[1-9][0-9]{8}[VX]$
    

    或者,OR 条件如下

    ^[1-9][0-9]{8}(V|X)$
    

    更新:

    要匹配字母不区分大小写,请使用i 标志,或者也可以在类中添加小写字符

    ^[1-9][0-9]{8}[VvXx]$
    

    【讨论】:

    • 检查X.V是否区分大小写。我尝试了类似^[1-9][0-9]{8}(V|X)$/i 的方法,但它不起作用
    • @user3733831 使用不区分大小写的标志/^[1-9][0-9]{8}[VX]$/i 或者您也可以使用[VvXx]
    【解决方案2】:

    你也可以试试更简单的(除非前导数字不能为0)

    \d{9}[VX]
    

    【讨论】:

      【解决方案3】:

      为什么不只是 d{9}/\d{9}(V|X)/ 似乎更容易。

      var test = "qwerty000000000Xqwerty";
      
      console.log(test.match(/\d{9}(V|X)/));
      

      http://jsfiddle.net/u5gmfjeL/1/ - 也匹配830363670V

      不区分大小写添加/i -> /\d{9}(V|X)/i -> http://jsfiddle.net/u5gmfjeL/2/

      【讨论】:

      • 如何修改以匹配X, V的区分大小写
      • @user3733831 我猜你的意思是case-insensitive,你可以使用i标志
      【解决方案4】:

      你可以这样做:

      ^[1-9][0-9]{8}[VX]$
      

      或者更一般地说,如果后缀是多个字符,您可以使用组。看起来您正在使用 POSIX 扩展正则表达式 (ERE) 语法,您也可以对组使用括号,例如:

      ^[1-9][0-9]{8}(V|X)$
      

      Link to ERE syntax

      Link to JavaScript Regex standard

      【讨论】:

      • 问题标记为 JavaScript 和 PHP。显然不能两者兼有,但两者都与 POSIX ERE 不同。
      • 是的,我没有注意到标签。我刚刚看到 {8} 并且可以看出它一定在 Extended RE 系列中的某个地方。看起来 JavaScript RE 是一种退化的兼容 Perl 的 RE,不过它应该是 ERE 的纯超集。谁知道 PHP 是什么。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多