正则表达式字符串替换

时间:2012-01-25 17:31:01

标签: javascript regex

我有这样的网址:

 http://mywebsite.com/my-very-long-product-title/my_sku,default,pd.html

我想用

替换这个字符串
http://mywebsite.com/-/my_sku,default,pd.html

我只使用javascript。规则是我希望始终替换最接近字符串末尾的单斜杠之间的所有内容。

5 个答案:

答案 0 :(得分:0)

如果您总是想要替换完全相同的字符串,则可以执行以下操作:

new_string = old_string.replace(/my-very-long-product-title/, '-');

如果您要替换mywebsite.com/之后的内容,请执行以下操作:

new_string = old_string.replace(/(mywebsite.com\/)[^\/]+/, '$1-');

或者,也许,为了确保不替换像http://mywebsite.com/whatever/mywebsite.com/this-shouldnt-be-replaced/etc这样的字符串中的内容,请执行以下操作:

new_string = old_string.replace(/^(http:\/\/mywebsite.com\/)[^\/]+/, '$1-');

此外,接受httphttps

总是好的
new_string = old_string.replace(/^(https?:\/\/mywebsite.com\/)[^\/]+/, '$1-');

答案 1 :(得分:0)

要使用/-/替换从倒数第二个斜杠到最后一个斜杠的所有内容,您可以使用

result = subject.replace(/\/[^\/]*\/(?=[^\/]*$)/g, "/-/");

更具可读性:

/           # Slash
[^/]*       # followed by any number of non-slash characters
/           # and another slash.
(?=[^/]*$)  # Make sure that there is no further slash until the end of the string

答案 2 :(得分:0)

已编辑以符合您的问题编辑

好的,因为这是正则表达式类别,我会给出一个正则表达式的答案:

var text = 'http://mywebsite.com/my-very-long-product-title/my_sku,default,pd.html';
var re = '/(http:\/\/.+\/)[^\/]+?(\/.+)/i';
text.replace(re,'$1-$2');

或者您是否正在讨论如何将http://mywebsite.com/-/my_sku,default,pd.html加载与http://mywebsite.com/my-very-long-product-title/my_sku,default,pd.html相同的数据? - 因为这确实是一个非常不同的问题。

答案 3 :(得分:0)

var oldUrl = "http://mywebsite.com/my-very-long-product-title/my_sku,default,pd.html";
var groups = /^(.*?com\/).*(\/.*)$/.exec(oldUrl);
var newUrl = groups[1] + "-" + groups[2];

答案 4 :(得分:0)

另一个答案 - 就像Tim Pietzcker没有使用前瞻一样。

find:      /[^/]*(/[^/]*)$
replace:   /-$1