Javascript 将程序代码合并到关联数组对象

Javascript 将程序代码合并到关联数组对象,javascript,Javascript,我有5个函数可以根据正则表达式检查用户输入……这些正则表达式已经抽象出来,并按照中的建议放在这里 现在,我想抽象出功能,并将代码放入前一篇文章中的关联数组中。然而,对于这是否是最佳实践,他们似乎存在一些争议?这样行吗 将这些函数放入函数的关联数组中是否是一种良好的做法?上一篇做这件事的帖子还没有结束,我猜他们已经决定不做了 但基本上如何将类似的方法正确地组合在一起 EDIT 1: // consolidated regular expressions var patterns = {

我有5个函数可以根据正则表达式检查用户输入……这些正则表达式已经抽象出来,并按照中的建议放在这里

现在,我想抽象出功能,并将代码放入前一篇文章中的关联数组中。然而,对于这是否是最佳实践,他们似乎存在一些争议?这样行吗

将这些函数放入函数的关联数组中是否是一种良好的做法?上一篇做这件事的帖子还没有结束,我猜他们已经决定不做了

但基本上如何将类似的方法正确地组合在一起

EDIT 1: // consolidated regular expressions

var patterns = {   
  name: /^[a-zA-Z-\s]{1,20}$/, 
  email: /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{1,4}$/,
  pass: /.{6,40}/,
  url:  /^[-\w&:\/\.=\?,#+]{1,}$/,
  aml:  /<(.+)_([a-z]){1}>$/
}; 

// checks full name which allows characters and dashes

function check_name(text,id,res) 
  {
  for(var d=0;d<=0;d++)
    {
    if(!patterns["name"].exec(text.value))
      {
      o2(id,res);
      return 0;
      }
    }
    return 1;
  }

// checks for valid email form

function check_email(text,id,res)
  {
  if(!patterns["email"].exec(text.value))
    {
    o2(id,res);
    return 0;
    }
  return 1;
  }

// checks for password length

function check_pass(text,id,res)
  {
  if(!patterns["pass"];.exec(text.value))
    {
    o2(id,res);
    return 0;
    }
  return 1;
  }

// checks for valid url form

function check_url(text,id,res)
  {
  if(!patterns["url"].exec(text.value))
    {
    o2(id,res);
    return 0;
    }
  return 1;
  }

// checks for aml form

function check_aml(text)
  {  
  if(a=patterns["aml"].exec(text))
    {
    if(a[2]=='p')
      {
      return 0;
      }
    else if (a[2]=='f')
      {
      return 1;
      }
    }
  else
    {
    return 2;
    }
  }
EDIT 1://合并正则表达式
变量模式={
名称:/^[a-zA-Z-\s]{1,20}$/,
电邮:/^[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\[a-zA-Z]{1,4}$/,
通过:/。{6,40}/,,
url://^[-\w&::\/\.=\?,\+]{1,}$/,,
反洗钱:/$/
}; 
//检查允许使用字符和破折号的全名
功能检查\u名称(文本、id、分辨率)
{

对于(var d=0;d我认为创建一个公共位置来存储您的模式没有任何问题。事实上,这似乎是一个好方法。但是我不认为有必要让您的单个检查函数知道全局存储。相反,应该让它们只知道正在检查的模式和源代码如果你采用这种方法,你的检查代码可以大大简化

var make_check = function (pattern) {
  return function (text, id, res) {
    if(!pattern.exec(text.value)) {
      o2(id,res);
      return 0;
    }

    return 1;
  };
};

var check_name = make_check(patterns.name);
var check_email = make_check(patterns.email);
var check_pass = make_check(patterns.pass);
var check_url = make_check(patterns.url);

在这里,我从checking函数中删除了全局存储的概念。由于代码的其余部分非常相似,因此可以将其抽象为一个方法,并将其传递给它希望匹配的模式。

您可能需要校对您的帖子…patrens.name可以代替模式[“name”]?@chrisaker一般来说是的,它可以工作……模式。名称……就像你说的……我很难通过模式……就是说我在函数外有一个reutrn语句,而我显然没有?……让我看看。@chrisaker很抱歉,我的示例中有语法错误。我已经更新了它以更正它所有的工作……谢谢……我离开了输出函数关键字,但我已修复它…再次感谢