我试图学习如何测试正则表达式,我有点困惑。下面是对单词是否在正则表达式中的测试。如果它们是应该写入子字符串,如果它们不是(!和。和""),它们应该转储以将先前记录的子字符串写入数组中。但是,在循环中测试时,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]));
答案 0 :(得分:0)
if (word.test(str[i]) === true);
如果测试为真,则不执行任何操作(;
)
{
testString = testString.concat(str[i])
}
然后执行此复合语句。
if (word.test(str[i]) === false);
如果测试结果为假,则不再执行任何操作(;
)。
{
stringArray = stringArray + "," + testString;
}
然后做这个复合声明。
你的作业不是if
声明的结果,因为额外的分号,它们只是独立的。