我无法理解我的生活,这不会取代正常/在str。我想有办法逃脱它,但我尝试过的一切似乎都不起作用。
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);
答案 0 :(得分:2)
normal/
永远不会匹配,因为正则表达式末尾的$
与字符串的 end 匹配。由于normal/
根本不会发生在最后,因此永远不会匹配。
删除$
并将正则表达式更改为:
new RegExp("(tn/tn_|tn_med/|normal/|lrg/lrg_|'original/)")
确实有效。
答案 1 :(得分:2)
normal/
不在字符串的末尾,正则表达式中的$
需要它。
尝试
var usedPreSizeRangeRegExp = new RegExp("(tn/tn_|tn_med/|normal/|lrg/lrg_|'original/)");
答案 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);