1

私はこの正規表現を返そうとしていますが、返されるだけです"flies a"

s = 'test <!-- flies are little birds --> end';
alert(s.match(/f(.*)a/));

なぜこれが戻るのですか

flies a
lies

f と a を必須にする方法を教えてください。

ありがとうございました

4

3 に答える 3

4

.match配列を返します。最初の要素は一致したテキスト全体であり、他の各要素はキャプチャ グループのコンテンツです。キャプチャ グループは 1 つなので、2 番目の要素はそれによってキャプチャされたテキストです。

グループを削除するか、配列内の他の要素を無視してください。いずれにせよ、最初のものにアクセスする必要があります。

var match = s.match(/f(.*)a/)[0]; // or /f.*a/

PS:alertは悪いデバッグ ツールです。代わりにconsole.logorを使用してください。console.dir

于 2013-01-09T13:06:49.177 に答える
2

括弧に入れないでください。

alert(s.match(/f.*a/));

ブラケットはキャプチャ グループを作成します。これにより、一致の特定の部分に関心があることを指定できます。この場合、全体に関心があるので、括弧は必要ありません。

于 2013-01-09T13:06:42.823 に答える
0

括弧を削除するか、式全体を追加の括弧に入れるだけです。

s.match(/f.*a/)[0]; また s.match(/(f(.*)a)/)[1];

于 2013-01-09T13:08:02.263 に答える