0

次のように、角かっこで囲まれた連続する数字を持つテキストエリア(IDが「work」)があります。

[6] [7] [8] [9] [10]

ボタンを押すと、次のようにそれぞれが 1 ずつ増加する必要があります。

[7] [8] [9] [10] [11]

Javascriptでこれを行うにはどうすればよいですか? 以下のように書いたのですが、うまくいきません。

addOne = function() {
    var work = document.getElementById('work');
    var re = /\[\d+\]/g
    var arr = re.match(work.value);
    var len = arr.length;
    var pat = /\d+/
    var begin = pat.exec(arr[0]); 
    var last = pat.exec(arr[len-1]);
    for (i=begin;i<=last;i++) {
        var re1 = new RegExp("[i]"); 
        var re2 = new RegExp("[i++]");
        var newval = work.value.replace(re1,re2);
        work.value = newval;
    }
}

テキストエリアには、これらの数値以外のテキストを含めることもできます。ここで私を助けてください。任意のガイダンスをいただければ幸いです。

4

1 に答える 1

2

.replaceRegExp およびコールバック関数と組み合わせて使用​​します (デモ: http://jsfiddle.net/veYTt/ ):

var work = document.getElementById('work');
work.value = work.value.replace(/\[(\d+)(?=\])/g, function(full_match, i) {
    return '[' + ++i;
});

文字列から数値に変換し、値を返す++iため、を使用しました。代替手段は.++iii + 1(i + 1*1)

正規表現の説明:

  • \[一致し[ます。
  • (\d+)任意の整数に一致してキャプチャします。このグループは、私が名前を付けた 2 番目の引数としてコールバック関数に渡されますi
  • (?=\])先読みです。以前に一致した文字の後に が続くと、パターンが一致し]ます。
于 2012-07-07T19:19:09.530 に答える