使用不带eval的输入字段属性的Javascript regex验证

Javascript regex validation using input field attributes without eval

本文关键字:属性 Javascript regex 验证 字段 输入 eval      更新时间:2023-09-26

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

我想知道是否有某种方法可以在没有eval的情况下应用相同的功能,因为我听说它在js解释器上很糟糕。还有改进(如果有的话)。此外,我还想知道是否有同样的功能,即将可重复使用的regex规则应用于输入字段。

这是我的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正则表达式调用测试正则表达式。

您可以使用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;
  }
});