我在javascript中有一个正则表达式如下:
var regex = /(\d{2,3})(\D{1,2})(\d{1,8})/;
应显示2或3位数的第一部分,然后是1到2个非数字字符,然后是1到8位数字
形成如下所示的内容:45ER12345
我的问题是我如何将其变成一个带变量的数组(一个没有变量(\ d {2.3})的长数据会使初学者编码器受益。)
var regex = /(\d{2,3})(\D{1,2})(\d{1,8})/;
var stringBits = regex.exec(form.cname.value);
//This ties the variables to the text below that will appear in an alert box
alert("Hello " + form.fname.value + ". Your car's year is " + stringBits[1] + " and your county is " + stringBits[2] + " the car number is " + stringBits[3] );
return true; // Form is good / processing successfully complete
}
这就是我写的。在这里没有看到2个输入框,用户在其中输入他们的名字和汽车注册表。结果应解析汽车注册表,如第一个示例所示,并将其显示在一个框中。
我一直使用的正则表达式完全符合我的要求,但我只是想把它变成一个更简单的数组而没有初学者不会使用的所有复杂符号。
答案 0 :(得分:1)
你的正则表达式似乎很好,你只是在寻找String#match(regex)
:
var regex = /(\d{2,3})(\D{1,2})(\d{1,8})/;
var s = '45ER12345';
var m = s.match(regex);
//=> ["45ER12345", "45", "ER", "12345"]