2

JS regX でいくつかの値を一致させ、それらをマークアップに置き換えようとしています。だからここに私が試したコードがあります。

content = '<p>[dfp:advertisement:leaderboard:750x90]</p>text here<p>[dfp:advertisement:box1:300x250]</p>';
var regX = /([a-zA-Z0-9]*):([0-9]*x[0-9]*)/g;
match = regX.exec(content);

問題は、これが最初の値のみに一致し、2 番目の値には一致しないことです。追加しまし/gたが、まだ運がありません。

ご覧いただきありがとうございます。

4

2 に答える 2

1

を1回呼び出すと、フラグがあっても最初の一致execのみが返されます。ただし、正規表現には、同じ正規表現を使用するための後続の複数の呼び出しが次の一致するアイテムを返すような状態が含まれます。gexec

MDNexecドキュメントから:

返される配列には、最初の項目として一致したテキストがあり、次に、キャプチャされたテキストを含む一致したキャプチャ括弧ごとに1つの項目があります

[...]

正規表現で「g」フラグを使用している場合は、execメソッドを複数回使用して、同じ文字列内の連続する一致を見つけることができます。

したがって、このコードはalert、例の最初の2つの一致になります。

var content = '<p>[dfp:advertisement:leaderboard:750x90]</p>text here<p>[dfp:advertisement:box1:300x250]</p>';

var regX = /([a-zA-Z0-9]*):([0-9]*x[0-9]*)/g;
var match = regX.exec(content);
var match2 = regX.exec(content);

alert(match[0]);
alert(match2[0]);

他の人がすでに述べたように、代わりにmatch文字列を使用して、複数の一致を持つ配列を返すことができます。

したがって、上記のコードと同様に、このコードはalert例の最初の2つの一致になります。

var content = '<p>[dfp:advertisement:leaderboard:750x90]</p>text here<p>[dfp:advertisement:box1:300x250]</p>';
var regX = /([a-zA-Z0-9]*):([0-9]*x[0-9]*)/g;

var match = content.match(regX);

alert(match[0]);
alert(match[1]);
于 2012-09-08T19:03:43.963 に答える
0

content.matchの代わりに使用regX.exec

于 2012-09-08T19:01:20.357 に答える