Javascript正则表达式,同时评估true和false

时间:2016-12-20 18:11:03

标签: javascript regex

我试图学习如何测试正则表达式,我有点困惑。下面是对单词是否在正则表达式中的测试。如果它们是应该写入子字符串,如果它们不是(!和。和""),它们应该转储以将先前记录的子字符串写入数组中。但是,在循环中测试时,word.test(str)等于false和true!当我在它上面对它进行测试时,它的评估很好(例如****之后的例子),但有一些奇怪的事情发生在它没有在for循环中工作的地方。有什么想法吗?

 function countWords(str) {
      var testString = '';
      var stringArray = [];
      var retObj = {};
      var word = /\S/;

  for(i = 0; i<str.length; i++)
  {
      if (word.test(str[i]) === true);
      {
          testString = testString.concat(str[i]);
      }
      if (word.test(str[i]) === false);
      {
          stringArray = stringArray + "," + testString;
          testString = "";
      }
  }

  return stringArray;

}

console.log(countWords("Hi! How are you?"));


console.log("*****");

var phrase = "Hi! How are you?";
console.log(/\S/.test(phrase[3]));

1 个答案:

答案 0 :(得分:0)

if (word.test(str[i]) === true);

如果测试为真,则不执行任何操作(;

  {
      testString = testString.concat(str[i])
  }

然后执行此复合语句。

  if (word.test(str[i]) === false);

如果测试结果为假,则不再执行任何操作(;)。

  {
      stringArray = stringArray + "," + testString;
  }

然后做这个复合声明。

你的作业不是if声明的结果,因为额外的分号,它们只是独立的。