0

JavaScriptの正規表現をこんな感じで使いたい

/marker\d+"?(\w+)"?\s/gi

このような文字列で:

IDoHaveMarker1"apple" IDoAlsoHaveAMarker352pear LastPointMakingmarker3134"foo"

そして、私はそれがこのような配列を返すことを望みます:

[ "apple", "pear", "foo" ]

引用符は、それらが文字列であることを明確にするためのものです。それらは結果に含まれるべきではありません。

4

1 に答える 1

4

正規表現を実際に使用する方法について質問している場合:

複数の(グローバル)一致のすべてのキャプチャを取得するには、ループとexecJavaScriptを使用する必要があります。

var regex = /marker\d+"?(\w+)/gi;
var result = [];
var match;
while (match = regex.exec(input)) {
    result.push(match[1]);
}

(とにかくオプションであるため、キャプチャのみに関心がある場合は、末尾を省略でき"?\s?ます。これにより、一致する結果に影響を与えることはありません。)

いいえ、g1回の呼び出しですべてを実行することはできません。省略した場合はgexec毎回同じ一致が返されます。

Marker13"something Marker14barBlenderが述べたように、 (一致しない)のようなものを除外したい場合は、"別のキャプチャグループと後方参照を使用する必要があります。これにより、目的のキャプチャがインデックスにプッシュされることに注意してください2

var regex = /marker\d+("?)(\w+)\1/gi;
var result = [];
var match;
while (match = regex.exec(input)) {
    result.push(match[2]);
}
于 2012-12-12T23:35:41.000 に答える