正则表达式表示具有某些条件的数字范围



我正在使用javascript创建一个项目。我想在我的项目中实现正则表达式以进行验证。 验证就像增加订单的数字范围 这是我的要求。

1-56  --------Pass
15 -----------Pass
1-5-9 --------Fail
asd988 -------Fail
50-49 ------- Fail

我正在尝试使用这个

^[0-9]+-[0-9]+$

它对我不起作用

更新:更改是用户可以添加多个值,例如:

1-56,56,3

您可以匹配由单个或两个数字组成的字符串,捕获数字并在有两个数字时进行比较。仅当不匹配或第一个数字小于第二个数字时,才返回 false:

const rx = /^(d+)(?:-(d+))?$/
const isValid = (string) => {
const m = rx.exec(string);  
if (m && !m[2]) {
return true;
} else if (m && parseInt(m[2], 10) > parseInt(m[1], 10)) {
return true;
} else { 
return false; 
}
}
const strs = ['1-56,56,3', '1-56', '15', '1-5-9', 'asd988', '50-49'];
for (let s of strs) {
console.log( s, s.split(",").every(x => isValid(x)) )

}

正则表达式匹配/^(d+)(?:-(d+))?$/

  • ^- 字符串的开头
  • (d+)- 第 1 组:一个或多个数字
  • (?:-(d+))?- 匹配 1 次或 0 次出现的可选非捕获组
    • ---
    • (d+)- 第 2 组:一个或多个数字 -$- 字符串结尾。