Javascript表单验证|设置一个特定的输入格式
问题描述:
我的工作有要求用户只有输入任何的以下三个选项输入字段项目:Javascript表单验证|设置一个特定的输入格式
- 号码,例如150
- 号码开头一个字母(其中必须是N,不区分大小写)等N150
- 与一个字母(必须是N结束号码,不区分大小写)等150N
任何其他值,如:
- 150X将返回错误信息
wrong input
- X150将返回
wrong input
- 1N50将返回
wrong position
答
的正确办法做到这一点是要有效数字数组,然后检查如果给定的文本存在于你的数组中。
例如:
var validNumbers = [ 150, N150, 150N ];
if (validNumbers.indexOf(parseInt(num, 10)) >=0) {
//Match
}
你需要对IE的indexOf
功能:
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(needle) {
for(var i = 0; i < this.length; i++) {
if(this[i] === needle) {
return i;
}
}
return -1;
};
}
答
检查这个答案:
Regular expression to match a number range in JavaScript
和调整你的需求,你可以通过添加正则表达式部分来创建接受值如:在末尾或开头轻松添加“N”-N150 -150N -130N -N130
+0
在另一个城堡没有答案*(仅链接)不是答案... –
答
非regexapproach(只是为了说明为什么正则表达式是有用):
function test(value){
//convert to array
value=value.split("");
//check the number
function isnumber(num){
return num.every(n=>"1234567890".includes(n));
}
//weve got three possibilities:
//150
if(isnumber(value)) return true;
//N150
var [n,...rest]=value;
if(n==="N" && isnumber(rest)) return true;
//150N
var n=value.pop();
return n==="N" && isnumber(value);
}
的150,150N和N150只是一个例子,用户可以输入不同的数字,如2000,1657N,N8等 –
所以你可以编辑以匹配你想要的!我刚给你一个可能的解决方案! –
Rigth,从(001 - 999)(N001 - N999)(001N-999N)开始的数字,只有3000个值的数组:/。顺便说一句,* N130 *不是#正确的#... –