我在正确定义正则表达式时遇到问题。我要检查一组数字f.e .: 1,2,14,15,16,17或12,13,14,15,16,17或1,2,3,6,7,8。每一组包含1到49之间的6位数字。我通过输入的模式字段对其进行检查。
我写了一些正则表达式,但仅适用于2位数字。([1-9]|[1-4][0-9],){5}([1-9]|[1-4][0-9])
感谢所有答案:)
您忘了在逗号和锚点之前使量化模式内的数字模式分组,以使正则表达式引擎与完整的输入字符串匹配:
^(?:(?:[1-9]|[1-4][0-9]),){5}(?:[1-9]|[1-4][0-9])$
^ ^^^ ^ ^
请参见regex demo。
详细信息
^
-字符串开头(?:(?:[1-9]|[1-4][0-9]),){5}
-五次出现:(?:[1-9]|[1-4][0-9])
-从1
到9
的数字或从10
到49`的数字,
-逗号(?:[1-9]|[1-4][0-9])
$
-字符串结尾。JS演示:
var strs = ['1,2,14,15,16,17','12,13,14,15,16,17', '1,2,3,6,7,8', '1,2,3,6,7,8,'];
var rng = '(?:[1-9]|[1-4][0-9])';
var rx = new RegExp("^(?:" + rng + ",){5}" + rng + "$");
for (var s of strs) {
console.log(s, '=>', rx.test(s));
}