如何替换 Javascript 中的正则表达式子字符串匹配?
Posted
技术标签:
【中文标题】如何替换 Javascript 中的正则表达式子字符串匹配?【英文标题】:How can I replace a regex substring match in Javascript? 【发布时间】:2011-04-05 14:40:22 【问题描述】:var str = 'asd-0.testing';
var regex = /asd-(\d)\.\w+/;
str.replace(regex, 1);
这会将整个字符串 str
替换为 1
。我希望它替换匹配的子字符串而不是整个字符串。这在 javascript 中可行吗?
【问题讨论】:
仅供参考,所有解决方案都非常复杂。你只是想更换比赛,对吧?无需修改正则表达式的简单方法如下:str.replace(regex, "$`1$'")
见developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
【参考方案1】:
var str = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;
str = str.replace(regex, "$11$2");
console.log(str);
或者如果您确定字符串中不会有任何其他数字:
var str = 'asd-0.testing';
var regex = /\d/;
str = str.replace(regex, "1");
console.log(str);
【讨论】:
或使用函数:'asd-0.testing'.replace(/(asd-)\d(\.\w+)/, function(mystring, arg1, arg2)return arg1 + '我的号码' + arg2) 有什么你不知道正则表达式结构的答案吗?在这里,您基本上是在创建一个包含两个匹配项的新正则表达式 很高兴知道您需要在您想要的部分周围使用大括号 () 作为 $1、$2 等。【参考方案2】:使用str.replace(regex, $1);
:
var str = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;
if (str.match(regex))
str = str.replace(regex, "$1" + "1" + "$2");
编辑:关于评论的改编
【讨论】:
我想用 '1' 替换子字符串,而不是用子字符串替换整个字符串【参考方案3】:我会在您要更换的部件之前和之后拿到零件并将它们放在两边。
喜欢:
var str = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;
var matches = str.match(regex);
var result = matches[1] + "1" + matches[2];
// With ES6:
var result = `$matches[1]1$matches[2]`;
【讨论】:
+1 我个人喜欢收集火柴。 我同意,在我看来,提供匹配的集合更具可读性。【参考方案4】:我认为实现目标的最简单方法是:
var str = 'asd-0.testing';
var regex = /(asd-)(\d)(\.\w+)/;
var anyNumber = 1;
var res = str.replace(regex, `$1$anyNumber$3`);
【讨论】:
以上是关于如何替换 Javascript 中的正则表达式子字符串匹配?的主要内容,如果未能解决你的问题,请参考以下文章
使用正则表达式(regex)替换jQuery / JavaScript中的选定文本
javascript 正则表达式 替换 html 中的 p标签替换成BR标签