如何在“#overlay /”之后和第一次之后的“/”之前更改字符?
var x = "www.foo.com/#overlay/2/";
x.replace(/#overlay\/([^]*)\//, "1"); // i'm expecting: www.foo.com/#overlay/1/
我正在使用此代码,但没有成功。我对regex不太了解。
我搜索了一些问题但没有成功。
答案 0 :(得分:1)
我不会在这里使用正则表达式。您可以使用.split()
。
var url, newUrl, peices;
url = 'www.foo.com/#overlay/2/';
// Split the string apart by /
peices = url.split('/');
// Changing the 3 element in the array to 1, it was originally 2.
peices[2] = 1;
// Let's put it back together...
newUrl = peices.join('/');
答案 1 :(得分:0)
你犯了3个错误:
replace
不会更改传递的字符串(字符串是不可变的)但返回一个新字符串你可以这样做:
x = x.replace(/(#overlay\/)[^\/]*\//, "$11/");
$1
这里指的是第一个捕获的组,因此您不必在替换字符串中键入它。
例如,它会改变
"www.foo.com/#overlay/2/rw/we/2345"
到
"www.foo.com/#overlay/1/rw/we/2345"