正则表达式用于表示1-49的6位数字

问题描述 投票:1回答:1

我在正确定义正则表达式时遇到问题。我要检查一组数字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])

感谢所有答案:)

regex
1个回答
0
投票

您忘了在逗号和锚点之前使量化模式内的数字模式分组,以使正则表达式引擎与完整的输入字符串匹配:

^(?:(?:[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])-从19的数字或从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));
}
© www.soinside.com 2019 - 2024. All rights reserved.