如何为这种情况编写正则表达式

时间:2016-02-26 11:06:53

标签: javascript regex match

我必须验证这种格式的车辆编号 XY-01-AA-1234

  1. XY是两个字母
  2. 01是两位数字
  3. AA是字符串中可能存在或不存在的一个或两个字母
  4. 1234是介于1到9999之间的数字
  5. 如果不存在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-1234XY-01-A-1234XY-01-AA-1234

2 个答案:

答案 0 :(得分:2)

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

/^[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

答案 1 :(得分:0)

根据您的条件,

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

这可以用来检查车辆编号