2

入力は次のようになります。

path = "html body div div:eq(2) p:eq(4)"

括弧内のすべての数字を1つ減らして、次のような文字列を取得したい

path = "html body div div:eq(1) p:eq(3)"

私は何をすべきか?前もって感謝します。

4

2 に答える 2

5

Prinzhornの答えはより簡潔ですが、「より厳密な」代替案を提供したいと思います(どこでもなく、括弧内の数字のみを考慮します)。

path = path.replace(/\((\d+)\)/g, function(match, group1) {
    return "(" + (parseInt(group1,10) - 1) + ")";
});

注: の 2 番目の引数として関数を指定するとreplace、完全な一致と各キャプチャ グループが引数として返され、元の一致があった場所に返されたものが挿入されます。(ここでは、リテラルand を照合し、)その間の [キャプチャされた] 数値を解析してデクリメントしています。

于 2013-05-11T08:59:52.923 に答える
3
str.replace(/\d+/g, function(a) {return a - 1;});
于 2013-05-11T08:53:18.690 に答える