使用输入字段属性(无需 eval)的 Javascript 正则表达式验证

标签 javascript jquery validation

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

我想知道是否有某种方法可以在不使用 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 正则表达式调用测试正则表达式。

最佳答案

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

关于使用输入字段属性(无需 eval)的 Javascript 正则表达式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34017020/

相关文章:

javascript - Styled-component 在 Internet Explorer 11 上不工作的解决方法

javascript - 有没有办法将多个函数传递给 AngularJS 指令?

javascript - 文件被添加,然后立即删除

javascript - 检查 Protractor 中一个元素内的所有文本是否相同

php - 如何使用 JavaScript 每 5 秒加载一个 PHP 文件

javascript - $error.pattern 无法正常工作

验证注释和属性文件

javascript - ReactJS - .map 函数内的 REST API 查询?

python - 仅使用字母的名称输入验证

javascript - 存在重复电子邮件时发出警报消息