Regex计算以逗号分隔的6位数字列表

Regex to evaluate a list of 6 digit numbers separated by commas

本文关键字:6位 数字 列表 分隔 计算 Regex      更新时间:2023-09-26

我有一个输入字段,我希望用户在6位数长的数字列表。用户输入的列表长度是可变的。

通过

123456、123457、156545、546541、546541

通过

123456、123457通过

546541年

12345、155154

154s54、159475、153456

您正在查找的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');

假设您不希望捕获单个数字,而只想验证输入,则应该使用以下正则表达式:

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

解析正则表达式:

    ^字符串的开头
  • ('d{6},'s*)*零个或多个6位数字,后跟逗号和可选空格
  • 'd{6}一个6位数字(这是最后一个,也可能是唯一一个)
  • $ end of string

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

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

注意第一个括号后的?:。它表示匹配表达式,但不捕获它。