g
正規表現にグローバル修飾子、を追加する必要があります/[<](\S+).*>(.*)<\/\1>/g
。
g
グローバル修飾子をmatch
使用せず、文字列内の最初の一致全体exec
を含む配列を最初の要素として返し、その後に、一致内の括弧で囲まれた一致パターンを後続の配列要素として返します。
g
修飾子を使用するmatch
とexec
、文字列からすべての一致が取得されます。 match
それらを配列として返し、exec
一致ごとに1つの配列を返します(一致パターンあり、なしの場合と同様g
)が、への複数の呼び出しは、exec
すべての一致が報告されるまで、それぞれ異なる一致を返します(例については以下を参照)。
一般に、状態を維持する正規表現(具体的には、一致を再開する文字列のインデックス)に依存するため、よりもお勧めmatch
します。複数の文字列で正規表現を使用する場合、これは有害であることがわかります。exec
exec
lastIndex
var reg = /\w/g;
reg.exec("foo"); // ["f"]
reg.exec("foo"); // ["o"]
reg.exec("bar"); // ["r"] -- does not start at the beginning of the string
それを動作と比較してくださいmatch
:
var reg = /\w/g;
"foo".match(reg); // ["f", "o", "o"]
"bar".match(reg); // ["b", "a", "r"]
// we can now use the arrays to get individual matches
ただし、グローバル検索で一致ごとに括弧で囲まれた一致パターンを取得する必要がある場合は、を使用する必要があります。これは、のグローバルアプリケーションは一致全体のリストのみを取得し、それらの一致との一致パターンは取得しないためです。exec
match
// the ending digit is a match pattern
var reg = /\w(\d)/g;
// match only gets list of whole matches
"d1b4h7".match(reg); // ["d1","b4","h7"]
// exec gets the match and the match pattern
reg.exec("d1b5h7"); // ["d1","1"]
reg.exec("d1b5h7"); // ["b4","4"]
reg.exec("d1b5h7"); // ["h7","7"]
結論としてmatch
、一致パターン情報は必要ないため、グローバル修飾子を使用したいようです。実際に一致パターン情報が必要な場合は、配列の代わりにが返さexec
れるまで、ループを使用して繰り返し呼び出すことにより、すべての一致を取得します。exec
null