Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为此条件编写正则表达式_Javascript_Regex_Match - Fatal编程技术网

Javascript 如何为此条件编写正则表达式

Javascript 如何为此条件编写正则表达式,javascript,regex,match,Javascript,Regex,Match,我必须验证以这种格式提供的一些车辆编号 XY-01-AA-1234 XY是两个字母 01是两位数字 AA是字符串中可能存在或不存在的一个或两个字母 1234是一个介于1到9999之间的数字 如果AA不存在,则字符串中不应出现以下hypen 我试过这样做: “[A-Z]{2}-[0-9]{2}-[A-Z-]{0,2}[0-9]{1,4}” 但它接受此格式的车辆编号XY-01--1234 也就是说,可接受的车辆编号格式为XY-01-1234或XY-01-A-1234或XY-01-AA-1234,您应

我必须验证以这种格式提供的一些车辆编号
XY-01-AA-1234

  • XY是两个字母
  • 01是两位数字
  • AA是字符串中可能存在或不存在的一个或两个字母
  • 1234是一个介于1到9999之间的数字
  • 如果AA不存在,则字符串中不应出现以下hypen 我试过这样做:

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

    但它接受此格式的车辆编号
    XY-01--1234


    也就是说,可接受的车辆编号格式为
    XY-01-1234
    XY-01-A-1234
    XY-01-AA-1234
    ,您应该使用此正则表达式:

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

    (?:[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

    根据您的条件

    [A-Z]{2}-[0-9]{2}-([A-Z-]{0,2}.-)?[0-9]{1,4}
    
    这可以在检查车辆号码时实现这一技巧

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