测试正则表达式的功能

时间:2018-08-07 12:35:42

标签: javascript regex

我在Eloquent Javascript书籍第9章的末尾进行正则表达式练习题。 -Eloquent Javascript。 提供了测试正则表达式的功能。当我运行此函数时,它会产生未定义的结果,而不是该函数期望的console.log输出。 code

function verify(regexp, yes, no) {
  // Ignore unfinished exercises
  if (regexp.source == "...") return;
  for (let str of yes)
    if (!regexp.test(str)) {
      console.log(`Failure to match '${str}'`);
    }
  for (let str of no)
    if (regexp.test(str)) {
      console.log(`Unexpected match for '${str}'`);
    }
}

// test for car and cat
console.log(verify(/ca[rt]/, ["my car", "bad cats"], ["camper", "high art"]));

2 个答案:

答案 0 :(得分:2)

您有三个console.log语句。

一个记录verify的返回值。您没有在该函数中放置return语句,因此它将始终返回undefined

仅记录yes中的某些内容未通过正则表达式的情况,但是yes数组中的所有内容均通过它。

最后一个日志仅记录no中的某项确实通过,但其中所有元素均未通过测试的情况。

答案 1 :(得分:0)

您在if和for循环之外缺少默认的return语句。这应该为您提供成功的控制台日志。

function verify(regexp, yes, no) {
  // Ignore unfinished exercises
  if (regexp.source == "...") return;
  for (let str of yes) if (!regexp.test(str)) {
    console.log("Failure to match '${str}'");
 }
 for (let str of no) if (regexp.test(str)) {
   console.log("Unexpected match for '${str}'");
  }
  console.log("all good!");
}

// test for car and cat
console.log(verify(/ca[rt]/,
    ["my car", "bad cats"],
    ["camper", "high art"]));