正则表达式用于评估由逗号分隔的6位数字列表

时间:2016-09-30 21:58:36

标签: javascript regex

我有一个输入字段,我希望用户将其放入6位数字的数字列表中。用户输入的列表将具有可变长度。

123456,123457,156545,546541,546541

123456,123457

546541

故障

12345,155154

故障

154s54,159475,153456

故障

154s544,159475,153456

2 个答案:

答案 0 :(得分:0)

您正在寻找的regEx是/ ^ \ d {6} $ /,它匹配一个6位数字,只有6位数字。



var cases = [
  '123456, 123457, 156545, 546541, 546541',
  '123456, 123457',
  '546541',
  '12345, 155154',
  '154s54, 159475',
  '154s544, 159475, 153456'
];
//Break up numbers in string into array the check each token
//against the regex.  If all tokens passes the test, then it
//returns true, else false.
t = cases.map(c => c.split(', ')
         .reduce((p, n) => p && !!n.match(/^\d{6}$/), true));
for (let i=0; i < cases.length;i++)
console.log('case:', cases[i], t[i]?'pass':'fail');
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

假设您不想捕获单个数字,但只想验证输入,则以下正则表达式应该这样做:

^(\d{6},\s*)*\d{6}$

正则表达式的细分:

  • ^字符串的开头
  • (\ d {6},\ s *)*出现零个或多个6位数字,后跟逗号和可选空格
  • \ d {6}一个6位数字(这是最后一个,可能是唯一的一个)
  • 字符串的结尾

请注意,括号内的表达式是一个捕获组。为避免捕获并使其更严格,表达式将写为:

^(?:\d{6},\s*)*\d{6}$

请注意第一个括号后的?:。这意味着匹配表达式但不捕获它。