我有一个小的验证来检查值是否低于170000, 这是我尝试过但它有一些小问题。值的范围为0 - 170000
/ ^(?:[1-9] \ d {0,4} | [1-6] \ d {3} | 170000)$ /
请有人纠正并解释这一点。
答案 0 :(得分:3)
为什么你需要正则表达式?
if (value <= 170000 && value >= 0)
无法完成工作?
答案 1 :(得分:2)
/^\D*(\d{1,5}|1[0-6]\d{4}|170000)\D*$/
这将检查整个字符串。否则,您需要微调正则表达式边界。
答案 2 :(得分:1)
\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
答案 3 :(得分:1)
尽管可能最好避免使用正则表达式进行范围验证,但我认为您的问题在于您的第二个正则表达式段:
[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)$/
。
答案 4 :(得分:0)
这解决了它,非常容易并且没有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')
});