2017-03-11 13 views
-1

rel|またはsyn|のすべてのインスタンスとそれに続くすべてのインスタンスを一致させようとしています。私はあなたがここに見ることができる正しい正規表現を持っています:https://regex101.com/r/E7RsbZ/1私はそれを私のJSに入れば、rel|またはsyn|の最初のインスタンスと一致するようです。ここでは、関連するコードは次のとおりです。Javascript regexは、最初の出現だけでなく、すべての一致の配列を取得します

var regex = /(syn|rel)\|[a-zA-Z]*/mgi; 

var regexed1 = regex.exec(text); 

テキストがregex101入力と同じであり、それは配列['syn|felicitous', 'syn']を返します。

私はなぜこれをやっているのか分かりません。私が返すのは、rel|またはsyn|のすべてのインスタンスを含む配列です。.toString()とそれを印刷することができます。ループを使うべきであることを意味するthis SO answerが見つかりましたが、問題は私がいつもどれくらいの数のrel|またはsyn|が存在するかわからないため、ループ回数をハードコードすることができません。

これについての助けがあれば、どこに行くのか分かりません。

var string = '\ 
 
adjective|syn|felicitous\ 
 
adjective|syn|glad\ 
 
adjective|syn|well-chosen\ 
 
adjective|ant|unhappy\ 
 
adjective|rel|felicitous\ 
 
adjective|rel|glad\ 
 
adjective|rel|cheerful\ 
 
adjective|rel|content\ 
 
adjective|rel|contented\ 
 
adjective|rel|elated\ 
 
adjective|rel|euphoric\ 
 
adjective|rel|joyful\ 
 
adjective|rel|joyous\ 
 
adjective|sim|felicitous\ 
 
adjective|sim|blessed\ 
 
adjective|sim|blissful\ 
 
adjective|sim|bright\ 
 
adjective|sim|fortunate\ 
 
adjective|sim|golden\ 
 
adjective|sim|halcyon\ 
 
adjective|sim|laughing\ 
 
adjective|sim|prosperous\ 
 
adjective|sim|riant\ 
 
adjective|sim|willing\ 
 
' 
 

 
var regex = /(syn|rel)\|[a-zA-Z]*/mgi; 
 

 
var matches = string.match(regex) 
 

 
console.log(matches)
.as-console-wrapper { min-height: 100vh; }

+0

を参照してください? – mtizziani

答えて

3

あなたは渡された正規表現は、グローバル(g)フラグを持っていたときにすべての一致を含む配列を返しますString#match、探しています文字列で一致します。最初の一致を返します。

match()を使用すると、見つかった一致する文字全体を返すことができます。

match()メソッドは、文字列を正規表現と照合するときに一致を取得します。

構文:詳細については、

str.match(regexp) 

は、plsはあなたがテキストの例を与えることができMDN

+1

これは私が行方不明だったものです。どうもありがとうございます。私はそれを逃した方法を知らない。 – Egrodo

+1

これは驚くほど見つけにくい場所に隠されている非常に便利な機能です。 MDNの文書にはほとんど言及されていないので、心配しないでください。あなたは一人じゃない! – gyre

1

のexec()のテストを:

関連する問題