仅替换正则表达式匹配的一部分

lvi*_*ani 9 javascript regex

请考虑以下javascript代码:

"myObject.myMethod();".replace(/\.\w+\(/g, "xxx");
Run Code Online (Sandbox Code Playgroud)

它给" myObjectxxx);"作为" .myMethod("被选中.

现在我只会选择myMethod.换句话说,我想选择.((排除)开头和结尾的任何单词.

谢谢,卢卡.

Ano*_*sse 25

一般答案:使用括号捕获要保留的部分,并将其包含在替换字符串中$1.

有关详细信息,请参阅任何regexp替换教程.

这里:只需在替换字符串中包含.(.

为了练习,写一个正则表达式将会把该计划的任何字符串--ABC--DEF----DEF--ABC--为任意字母值ABCDEF.所以--XY--IJK--应该变成--IJK--XY--.在这里,您确实需要使用捕获组和反向引用.

  • 您能否举例说明问题的解决方案?否则,如果您不熟悉“Capture”和正则表达式替换,那么这是相当模糊的。 (5认同)

Joe*_*oey 5

您可以使用环视断言:

.replace(/(?<=\.)\w+(?=\()/g, 'xxx')
Run Code Online (Sandbox Code Playgroud)

这些将使比赛成功,而同时又不属于比赛本身。因此,您只需要替换中间的零件。

对于不熟悉正则表达式的人来说,更简单的选择可能是在替换中也包含.(

.replace(/\.\w+\(/g, ".xxx(")
Run Code Online (Sandbox Code Playgroud)

  • 一种不使用`\ 1`的解决方法,不是吗?我的意思是,太多的人不了解前行和后行,但通常它们会带来更高的成本。特别是在这里,无论何时它们都在要替换的弦的开头或结尾处。 (2认同)