我正在使用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 组:一个或多个数字 -$
- 字符串结尾。