Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数返回正则表达式测试_Javascript - Fatal编程技术网

Javascript 函数返回正则表达式测试

Javascript 函数返回正则表达式测试,javascript,Javascript,晚上好,我不是一个特别好的程序员 我想返回keywordChk函数的结果,与一组更大的测试关键字相对应。 然而,当我这样做时,由于我缺乏技能,它会返回意想不到的结果 以下工作;但是,由于将短语硬编码到函数中,因此它有一定的局限性 let arr = [ /test$/i, /foo$/i, /bar$/i ]; function keywordChk(phrase) { for (let tmp of arr) { let pattern = new R

晚上好,我不是一个特别好的程序员

我想返回keywordChk函数的结果,与一组更大的测试关键字相对应。 然而,当我这样做时,由于我缺乏技能,它会返回意想不到的结果

以下工作;但是,由于将短语硬编码到函数中,因此它有一定的局限性

  let arr = [
    /test$/i,
    /foo$/i,
    /bar$/i
  ];

function keywordChk(phrase) {
  for (let tmp of arr) {
  let pattern = new RegExp(tmp);
    if (pattern.test(phrase)) {
      console.log(`true`);
    } else {
      console.log(`false`);
    };
  };
};
keywordChk("foo");
当我通过考试时,我得到两个错误和一个正确。然而,我希望一切都被标记为真实

   let str = [
    "foo",
    "bar",
    "test"
  ];
  let arr = [
    /test$/i,
    /foo$/i,
    /bar$/i
  ];

function keywordChk(phrase) {
  for (let tmp of arr) {
  let pattern = new RegExp(tmp);
    if (pattern.test(phrase)) {
      return true;
    }
    return phrase;
  };
};
str.forEach(function(item) {
  console.log(keywordChk(item));
});

任何帮助都将不胜感激

返回语句必须在for循环之后:

let str=[“foo”,“bar”,“test”];
设arr=[/test$/i,/foo$/i,/bar$/i];
函数关键字CHK(短语){
用于(arr的常量regExp){
if(regExp.test(短语)){
返回true;
} 
}
return phrase;//或return false;
}
str.forEach(功能(项目){
console.log(关键字chk(item));

});欢迎来到SO!此代码仅检查循环中的第一个元素,如果不匹配,则返回短语。您的意思是将
返回短语
下移一行吗?@ggorlen感谢您的热情接待和迅速回复。根据你的回答,我可能有两个问题?首先,我故意硬编码匹配字符串作为我的正则表达式数组进行测试。因此,在我的代码示例中,我希望在console.log 3中使用true语句。不是1对2错或短语。第二个问题是我的循环?也许是根据你的反馈。抱歉,根据您的回答,我没有足够的智慧修改我的代码以修复原始问题。@ggorlen我刚刚尝试了一下您所说的,它成功了,谢谢!你刚刚救了我一天多,我甚至可能已经放弃了!太棒了,谢谢!看起来它成功了,天哪,这太棒了。你可以省去
let pattern=new RegExp(tmp)
并直接使用
tmp
而不是
pattern
,因为
tmp
已经是一个正则表达式。@cars10m感谢您检查我的代码并提供压缩它的解决方案。它将帮助我完善我未来的脚本。非常感谢。