Regex 用于验证170000以下值的正则表达式
嗨,我有一个小验证来检查值是否低于170000, 这是我尝试过的,但有一些小问题。值的范围从0到170000 /^(?:[1-9]\d{0,4}|[1-6]\d{3}|170000)$/Regex 用于验证170000以下值的正则表达式,regex,validation,Regex,Validation,嗨,我有一个小验证来检查值是否低于170000, 这是我尝试过的,但有一些小问题。值的范围从0到170000 /^(?:[1-9]\d{0,4}|[1-6]\d{3}|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(170
请有人纠正并解释这一点。为什么需要正则表达式 如果(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
这就解决了它,非常简单,而且不用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')
});
Ext.apply(Ext.form.field.VTypes{
//vtype验证函数
msrp:功能(val,字段){
如果(val>=0&&val尽管尽可能避免使用正则表达式进行范围验证,但我认为您的问题在于第二个正则表达式段:
[1-9]\d{0,4}
[1-6]\d{3}
170000
第一个将处理长度为1到5(包括1到5)的所有数字,第二个应处理从100000
到(但不包括)170000
的六位数字(由第三个段处理)
但是,它只处理四位数字(第一段已经处理了),所以我怀疑它实际上应该是1[0-6]\d{4}
换句话说,/^(?[1-9]\d{0,4}1[0-6]\d{4}170000)$/
为什么不将其转换为一个数字?您试图针对哪种语言/工具?我使用的是extjs文本字段验证,我的字段具有extjs的屏蔽能力,因此我需要使用regexp测试验证。我想OP希望低于170000,而不是170000including@musefan检查他给出的正则表达式,它包括170000
是的,我看到了,但是at并不意味着这不是正则表达式的问题之一。当然,这是很明显的,所以这可能是一个很好的指标,表明它应该是包容性的,但我再次尝试不从人们的问题中假设任何智能级别。当我将它用于ExtJS时,我对这个字段也几乎没有屏蔽。因此我使用RegExp.valid值需要在0范围内-170000@PunithRaj您仍然不需要使用正则表达式。只需检查输入是否为数字,数字是否在范围内。缺少零:应为170000您忘记了它还需要处理前导1。此外,它当然需要处理零