我需要一个正则表达式来验证格式的字符串使用Javascript :
119,122,178-181,185,119,122,178-181,2,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185
我的正则表达式https://regex101.com/r/nhFnKE/1
问题是可能存在“n - x”
之类的范围0-1,2,3,4-7,8,9-20,21
非常感谢您的帮助
PS:空间管理并重复我将在另一个实例中执行
答案 0 :(得分:3)
您可以将带有一个或多个数字的重复模式与可选部分匹配?匹配短划线和一个或多个数字后跟逗号或行尾$
或重复包含逗号的可选部分(?:\d+(?:-\d+)?,)*
零次或多次,并确保最后一次匹配为\d+(?:-\d+)?
^(?:\d+(?:-\d+)?,)*\d+(?:-\d+)?$
const strings = [
"119,122,178-181,185,119,122,178-181,2,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185,119,122,178-181,185",
"0-1,2,3,4-7,8,9-20,21",
"0-1,2,test"
];
let pattern = /^(?:\d+(?:-\d+)?,)*\d+(?:-\d+)?$/;
strings.forEach((s) => {
console.log(pattern.test(s));
});