用Javascript正则表达式替换前导数字

时间:2015-08-26 10:34:24

标签: javascript regex

作为this question(不是我)的跟进,我需要用\\3n替换ID的前导号码(其中n是我们要替换的号码)。

一些例子:

"1foo"    -> "\\31foo"
"1foo1"   -> "\\31foo1"
"12foo"   -> "\\31\\32foo"
"12fo3o4" -> "\\31\\32fo3o4"
"foo123"  -> "foo123"

下面是一个替换每个数字实例的解决方案,但我不知道足够的正则表达式,一旦它遇到非数字就停止。

function magic (str) {
    return str.replace(/([0-9])/g, "\\3$1");
}

......或者正则表达式是一个糟糕的方式?我想这样做很容易,只需手动循环遍历字符串的每个字符。

1 个答案:

答案 0 :(得分:5)

只需使用两个步骤:首先找到前缀,然后对其字符进行操作:

s.replace(/^\d+/, function (m) {
    return [].map.call(m, function (c) {
        return '\\3' + c;
    }).join('');
});

无需模拟任何功能。