2016-10-21 5 views
2

次のコードは、 "cat"と "car"の両方の文字列に一致する正規表現を作成しようとしました。最初の一致後に正規表現が進まない

(function(){ 
 
    
 
    console.log(/(ca(t|r))+?/.exec(["cat", "car", "catcoon"])); 
 
    })()

この方法は "T" または "R" のいずれかになり、最初に一致したことになる "CA"。それは(+)でラップされます?複数の一致が可能です。 しかし、コンソールには最初の一致後にスタックされていることを示す["cat", "cat", "t"]が表示されます。

+4

結果をループする必要があります。 'exec'は呼び出しごとに1つの一致を返します。それに関する文書を読んでください。 – trincot

+0

あなたはああ答えが必要ですか? – prasanth

答えて

2

exec構文は次のとおりです。定期的な 表現に一致する文字列に対して strの

regexObj.exec(str) 

パラメータ

MDN

あなたは、アレイ内の文字列を、あなたの合格を渡しません。 JavaScriptはこれをできるだけ文字列に変換します。基本的には次のものが必要です。

(function(){ 
    var arr = ["cat", "car", "catcoon"]; 
    for (var i = 0; i < arr.length; i++) { 
    var str = arr[i]; 
    console.log(/(ca(t|r))+?/.exec(str)); 
    } 
})() 
0

このヘルプが必要です。

var result =["cat", "car", "catcoon", "cat", "car", "catcoon"].filter(x => /^ca[tr]$/.exec(x)); 
 

 
console.log(result)

関連する問題