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

标签 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");
}

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

最佳答案

这是一种使用反向字符串 + 前瞻方法实现所需功能的方法:

function revStr(str) {
    return str.split('').reverse().join('');
}

var s = "12fo3o4";
document.write(revStr(revStr(s).replace(/\d(?=\d*$)/g, function (m) {
    return m + "3\\\\";
 }))
);

正则表达式匹配一个数字,该数字后面可以跟 0 个或多个数字,直到反转字符串的结尾(实际上是开始)(使用 \d(?=\d*$)).回调允许操纵匹配(我们只需添加反转的 \\3。然后,我们只需反转结果。

关于javascript - 用 Javascript 正则表达式替换前导数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32224281/

相关文章:

javascript - 将选中的表行添加到电子邮件正文

javascript - json.success 重定向到感谢页面

javascript - 使用 Ajax 和 Node.js 的简单按钮单击示例?

regex - 正则表达式 - 以字符串开头和结尾

c# - 如何将一系列名称分成不同的行

javascript - 如何将 JQuery 导入自定义 dnn 模块

javascript - 如何根据 React 嵌套数组中的索引删除对象?

ruby - 匹配子串但不匹配异常子串

regex - 使用正则表达式匹配定界符

java - 如何在java中找到数据库中单词的相似匹配