繁体   English   中英

使用输入字段属性而不用eval进行Javascript正则表达式验证

[英]Javascript regex validation using input field attributes without eval

我正在制作一个功能来验证表单输入数据(用于练习),也许我也将使用它。

我想知道是否有某种方法可以在不使用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()">

在具有data-check属性作为我定义为的任何匹配变量的字段上

<input data-check='num'>

这将根据我的代码中定义的num regex将测试称为regex。

您可以使用new RegExpwindow[]做类似的事情:

$.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;
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM