我在 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 个输入框。结果应该像第一个示例中所示解析汽车注册表并将其显示在一个框中。
我一直在使用的正则表达式完全符合我想要的功能,但我只想将其转换为一个更简单的数组,而不包含初学者不会使用的所有复杂符号。
最佳答案
你的正则表达式似乎没问题,你只是在寻找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"]
关于javascript - 将正则表达式转换为简单数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23480260/