嗨,我有一个小验证来检查值是否低于 170000,这是我尝试过的,但它有一些小问题。值范围为 0 - 170000
/^(?:[1-9]\d{0,4}|[1-6]\d{3}|170000)$/
请有人纠正并解释这一点。
嗨,我有一个小验证来检查值是否低于 170000,这是我尝试过的,但它有一些小问题。值范围为 0 - 170000
/^(?:[1-9]\d{0,4}|[1-6]\d{3}|170000)$/
请有人纠正并解释这一点。
为什么你需要正则表达式?
不能if (value <= 170000 && value >= 0)
完成你的工作?
/^\D*(\d{1,5}|1[0-6]\d{4}|170000)\D*$/
这将检查整个字符串。否则,您需要微调正则表达式边界。
\b(\d{1,5})\b|\b([1][0123456]\d{4})\b|\b(170000)\b
解释:
\b(\d{1,5})\b
: 匹配从 0 到 99999 的所有数字\b([1][0123456]\d{3})\b
: 匹配 1 后跟 0 到 6,后跟任意 4 位数字,即 100000 到 169999
\b(170000)\b
: 匹配 170000
尽管如果可能的话最好避免使用正则表达式进行范围验证,但我认为您的问题在于您的第二个正则表达式段:
[1-9]\d{0,4}
[1-6]\d{3}
170000
第一个将处理长度为 1 到 5 的所有数字,因此第二个应处理100000
最多(但不包括)170000
(由第三段处理)的六位数字。
但是,它只处理四位数字(无论如何都已经由第一段处理)所以我怀疑它实际上应该是1[0-6]\d{4}
.
换句话说,/^(?:[1-9]\d{0,4}|1[0-6]\d{4}|170000)$/
.
这解决了它,在没有 RegExp 的情况下很容易解决 :) 其他发布 RegExp 进行验证的人也感谢他们。
Ext.apply(Ext.form.field.VTypes, {
// vtype validation function
msrp: function(val, field) {
if(val >= 0 && val <= 170000){
return true;
}else{
return bundle.getMsg('vl.locate.label.ntavalidmsrp');
}
return validMaxMSRPTest.test(val);
},
// vtype Text property: The error text to display when the validation function returns false
msrpText: bundle.getMsg('vl.locate.label.ntavalidmsrp')
});