2016-12-20 12 views
0

正規表現をテストする方法を勉強しようとしていて、ちょっと混乱します。以下は、単語の文字が正規表現にあるかどうかのテストです。それらがあれば、部分文字列に書き込む必要があり、そうでなければ(!と。 "")、以前に記録された部分文字列を配列に書き出すようにダンプする必要があります。しかし、ループ内でテストするとき、word.test(str)はfalseとtrueの両方と等しいです!私はそれをテストするとき、それは良い(****の後の例)を評価しますが、forループで動作しないところで起こっている奇妙なことがあります。何か案は?Javascriptの正規表現が真と偽の両方を評価する

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

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

テストが真であれば、何も(;)を行いません

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

次に、この複合文を実行します。

テストが偽であれば、もう一度何もしないでください(;)。

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

次に、この複合文を実行します。

あなたの割り当ては、ifのステートメントの結果ではなく、余分なセミコロンのために単なるフリースタンディングです。

+0

omgありがとう。デュ –

関連する問題