改变两个字符串之间的字符

时间:2013-07-03 15:33:31

标签: javascript jquery regex

如何在“#overlay /”之后和第一次之后的“/”之前更改字符?

var x = "www.foo.com/#overlay/2/";
x.replace(/#overlay\/([^]*)\//, "1"); // i'm expecting: www.foo.com/#overlay/1/

我正在使用此代码,但没有成功。我对regex不太了解。

我搜索了一些问题但没有成功。

2 个答案:

答案 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"