Javascript:替换内部替换

Javascript: replace inside a replace

本文关键字:替换 内部 Javascript      更新时间:2023-09-26

我的输入是许多行文本,如下所示:

a.b.c.d.e (f:g)

我需要把它变成

a.b.c.d.e (a/b/c/d/e/f?g)

请注意,虚线部分(a.b.c.d.e)可以具有不同数量的元素,因此有时它会q.r.s.t,有时是u.v.w.x.y.z等等。我有一个replace()可以给我(a.b.c.d.e.f?g),但我需要的是将所有这些.转化为结果中的/

有没有办法在替换件中进行替换?还是我应该在字符串上调用 replace() 两次?

抱歉,如果这个问题措辞不佳,我不太精通 javascript 中的正则表达式。

一种非常疯狂的方法:

var str = "a.b.c.d.e (f:g)";
var re = /([^'s]+)'s'(([^:]+):([^')]+)')/;
var newStr = str.replace(re, function(a,b,c,d){ return b + " (" + b.replace(/'./g,"/") + "/" + c + "?" + d + ")"; });

斯菲德尔

您需要将

调用一个接一个地链接replace()

var result = source.replace("foo", "bar").replace("oof", "rab");

>一种更理智的方式:)http://jsfiddle.net/smfPU/

input = "a.b.c.d.e.w.x.y.z (f:g:h)";
output = input.replace(/:/g, "?");
outputparts = output.split("(");
left = outputparts[0];
middle = left.replace(/'./g, "/").trim();
right = outputparts[1];
output = left + "(" + middle + "/" + right;
document.write(output);