我正在创建一个函数来验证表单输入数据(用于练习),也许我也会使用它。
我想知道是否有某种方法可以在没有eval的情况下应用相同的功能,因为我听说它在js解释器上很糟糕。还有改进,如果有的话。而且我想知道是否有一些东西可以完成相同的工作,即将可重用的正则表达式规则应用于输入字段。
这是我的JavaScript验证功能。
function validate(){
var num=/[0-9]+/g;
var alphanum=/[0-9a-zA-Z_]+/g;
var alphanumSpace=/[0-9a-zA-Z\w_]+/g;
var alpha=/[a-zA-Z]+/g;
var alphaSpace=/[a-zA-Z\w]+/g;
var alphanumDot=/[0-9a-zA-Z\._]+/g;
var money=/[0-9]+\.?[0-9]{0,2}?/g;
var flag=true;
var alertBox="Incorrect entries:\n\n";
$.each($('input[data-check]'),function(index,value){
if(!eval(value.dataset.check+'.test("'+value.value+'")')){
alertBox+=value.name+",\n";
flag=false;
}
});
alert(alertBox);
return flag;
}
用于在表单上调用
<form onsubmit="return validate()">
在具有数据检查属性的字段上,作为我定义为
的任何匹配变量<input data-check='num'>
这将在我的代码中定义的num regex上调用正则表达式。
答案 0 :(得分:1)
您可以使用new RegExp
和window[]
执行此类操作:
$.each($('input[data-check]'),function(index,value){
var str = value.value;
var patt = new RegExp(window[value.dataset.check]);
var res = patt.test(str);
if(!res){
alertBox+=value.name+",\n";
flag=false;
}
});