2016-05-10 1 views
1

いいえ、私は2つの正規表現を結合したいと思います。以下の例では、指定された文字だけを含む単語を抽出し、そのリストの中で、この例では別の文字rの単語のみを抽出したいと考えています。正規表現を組み合わせて、どちらにも一致しない

私はこのフォーラムでいくつかの記事を読んでいます。例えば

一つは次のとおりです。 Combining regular expressions in Javascript

彼らは|exp1|exp2で式を結合すると言います。それは私がしたことですが、私はしてはいけない言葉を得ます。以下の例では、r1r2をどのように組み合わせることができますか?

ありがとうございました。

//the words in list form. 
var a = "frog dog trig srig swig strog prog log smog snog fig pig pug".split(" "), 
//doesn't work, can we fix? 
    r = /^[gdofpr]+$|[r]+/, 
    //These work. 
    r1 = /^[gdofpr]+$/, 
    r2 = /[r]+/, 
    //save the matches in a list. 
    badMatch = [], 
    goodMatch = []; 
//loop through a. 
for (var i = 0; i < a.length; i++) { 
    //bad, doesn't get what I want. 
    if (a[i].match(r)) badMatch[badMatch.length] = a[i]; 
    //works, clunky. Can we combine these? 
    if (a[i].match(r1) && a[i].match(r2)) goodMatch[goodMatch.length] = a[i]; 
} //i 
alert(JSON.stringify([badMatch, goodMatch])); //just to show what we got. 

次のようになります。

[ 
    ["frog", "dog", "trig", "srig", "strog", "prog"], 
    ["frog", "prog"]] 

もう一度、ありがとう。 gdofpr文字からなるだけ一致文字列に

+0

javascript!= java – Justinas

+1

'^ [gdofpr] + $'の文字だけで構成され、 'r'も含むすべての単語を取得する必要があるのでしょうか? '/^[gdofpr] * r [gdofpr] * $ /'? –

+0

'| 'と組み合わせるとどちらかに一致し、両方で一致することはありません。 – nnnnnn

答えて

3

、それはまたrを持って、

/^[gdofpr]*r[gdofpr]*$/ 

regexとJSのデモを参照してください使用:

var a = "frog dog trig srig swig strog prog log smog snog fig pig pug".split(" "); 
 
var res = a.filter(x => /^[gdofpr]*r[gdofpr]*$/.test(x)); 
 
document.body.innerHTML = JSON.stringify(res, 0, 4);

関連する問題