【问题标题】:How to write regular expression for this condition如何为此条件编写正则表达式
【发布时间】:2016-02-26 11:06:52
【问题描述】:

我必须验证一些采用这种格式的车号 XY-01-AA-1234

  1. XY 是两个字母
  2. 01 是两位数
  3. AA 是字符串中可能出现也可能不出现的一两个字母
  4. 1234 是一个介于 1 到 9999 之间的数字

如果 AA 不存在,则后面的连字符不应出现在字符串中 我试过这个:

'[A-Z]{2}-[0-9]{2}-[A-Z-]{0,2}[0-9]{1,4}'

check_vehicle_no(reg_no,'[A-Z]{2}-[0-9]{2}-[A-Z-]{0,2}[0-9]{1,4}');
function check_vehicle_no(str,expp){
    return str.match(expp);
}

但它接受这种格式的车号XY-01--1234。

即,可接受的车辆编号格式为XY-01-1234 或XY-01-A-1234 或XY-01-AA-1234。

【问题讨论】:

    标签: javascript regex match


    【解决方案1】:

    你应该使用这个正则表达式:

    /^[A-Z]{2}-[0-9]{2}-(?:[A-Z]{1,2}-)?[0-9]{1,4}$/
    

    RegEx Demo

    (?:[A-Z]{1,2}-)? 模式由 1 或 2 个大写字母后跟连字符可选。

    在你的函数中使用它:

    function check_vehicle_no(str, expp) {
        return str.match(expp);
    }
    

    然后称它为:

    var re = /^[A-Z]{2}-[0-9]{2}-(?:[A-Z]{1,2}-)?[0-9]{1,4}$/;
    check_vehicle_no(reg_no, re);
    

    注意使用/.../ 而不是'...' 用于正则表达式文字字符串。

    PS:如果您只想验证输入,最好致电regex.test。

    【讨论】:

      【解决方案2】:

      根据您的情况,

      [A-Z]{2}-[0-9]{2}-([A-Z-]{0,2}.-)?[0-9]{1,4}
      

      这可以用来检查车辆号码

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-15
        • 2012-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-06
        相关资源
        最近更新 更多