我的输入是许多行文本,如下所示:
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);