正则表达式替换为正斜杠

时间:2013-12-04 16:48:06

标签: javascript regex string

我无法理解我的生活,这不会取代正常/在str。我想有办法逃脱它,但我尝试过的一切似乎都不起作用。

http://jsfiddle.net/KU6U5/

str = 'http://www.foobar.com/foo/normal/a.jpg';

var usedPreSizeRangeRegExp = new RegExp("(tn/tn_|tn_med/|normal/|lrg/lrg_|'original/)$");

strd = str.replace(usedPreSizeRangeRegExp, "");
alert(strd);

4 个答案:

答案 0 :(得分:2)

normal/永远不会匹配,因为正则表达式末尾的$与字符串的 end 匹配。由于normal/根本不会发生在最后,因此永远不会匹配。

删除$并将正则表达式更改为:

new RegExp("(tn/tn_|tn_med/|normal/|lrg/lrg_|'original/)")

确实有效。

Fiddle

答案 1 :(得分:2)

normal/不在字符串的末尾,正则表达式中的$需要它。

尝试

var usedPreSizeRangeRegExp = new RegExp("(tn/tn_|tn_med/|normal/|lrg/lrg_|'original/)");

RegexPal demo

答案 2 :(得分:1)

您可以使用/转义\,以便获得\/。您在末尾添加了$,这意味着,它只匹配字符串末尾的所有内容,但字符串不会以任何选项结束,因此不会有任何匹配。

var str = 'http://www.foobar.com/foo/normal/a.jpg';
var strd = str.replace(/(tn\/tn_|tn_med\/|normal\/|lrg\/lrg_|'original\/)/, "");

答案 3 :(得分:0)

试试这个:

str = 'http://www.foobar.com/foo/normal/a.jpg';

var usedPreSizeRangeRegExp = new RegExp("(tn\/tn_|tn_med\/|normal\/|lrg\/lrg_|'original\/)");

strd = str.replace(usedPreSizeRangeRegExp, "");
alert(strd);