作为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");
}
......或者正则表达式是一个糟糕的方式?我想这样做很容易,只需手动循环遍历字符串的每个字符。
答案 0 :(得分:5)
只需使用两个步骤:首先找到前缀,然后对其字符进行操作:
s.replace(/^\d+/, function (m) {
return [].map.call(m, function (c) {
return '\\3' + c;
}).join('');
});
无需模拟任何功能。