1

「id-odes=」の後に数字をキャプチャする必要がありますが、このフレーズがないと数字のみをキャプチャする必要があります。私はこのようなことを書きました

"id-odes=50388635:id-odes=503813535:id-odes=50334635"
    .match(/(?:id-odes=)([0-9]*)/g);

しかし、それは戻ります

["id-odes=50388635", "id-odes=503813535", "id-odes=50334635"]

それ以外の

[50388635, 503813535, 50334635]

私の方法が正しく機能しない理由を説明してください。ありがとう

4

2 に答える 2

4

配列を出力するだけでなく、結果を反復処理できます。

var re =/id-odes=([0-9]*)/g,
s = "id-odes=50388635:id-odes=503813535:id-odes=50334635";

while ((match = re.exec(s)) !== null) {
    console.log(match[1]);
}

デモ

于 2013-02-26T08:12:05.947 に答える
0

一致を繰り返したい場合は、次のようなものを使用できます。

s = "id-odes=50388635:id-odes=503813535:id-odes=50334635"  
re = /(?:id-odes=)([0-9]*)/
while (match = re.exec(s))
{
    console.log(match[1]); // This is the number part
}

文字列全体がまさにこの形式であると仮定すると、もちろん使用できますが "id-odes=50388635:id-odes=503813535:id-odes=50334635".match(/[0-9]+/g)、文字列に他の数字がある場合はもちろん壊れます。

.match(/(?:id-odes=)([0-9]*)/g);間違った結果が得られる理由の説明は非常に簡単です。キャプチャ グループに関係なく、正規表現が一致したものはすべて返されます。

于 2013-02-26T08:12:57.273 に答える