求:js校验,只能包含数字和分割符,分隔符(-)可以有一个,且不能以分割符开头和结尾,并且分隔符后的数字要大于分隔符前的数字,数字非零开头
例:9-99、99
直接用正则貌似不能比较数字大小吧
配合js的话还挺简单的
function valid(str) {
const m = str.match(/^(\d+)-(\d+)$/)
if (!m) return false
return Number(m[1]) < Number(m[2])
}
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
不要期望正则是银弹,能解决一切字符串校验判断的事情,你的要求明显不可能完全由正则来处理。
你现在提的验证需求其实还很不明确,比如分隔符到底是什么?分隔符是必须且只有1个还是,可以有1个?
这些不规定清楚,就没有办法细化出实现方法。
此外正则确实不能实现数的比较。所以需要用其它方式来处理。
按新的规则,我提炼一下:
-
-
,则-
只能存在于数字间,而不能是开头或者结尾0
开头-
时,最多只能有1个-
时,分隔前后数字情况为后面的大于前面的由此,基本的字符串,1-4 可以由正则写出,5只能由其它方式判断。
1-4的判断正则是
对于5需要用其它方式判断,参考前面的