输入网址:http://somewpsite.com/wp-content/uploads/2012/10/IMG_1234-150x150.jpg
预期输出网址:http://somewpsite.com/wp-content/uploads/2012/10/IMG_1234.jpg
当前正则表达式:$(this).attr('src').replace('/-[\d]+x[\d]+/', '');
假设$(this)
代表img
元素。我知道我可以轻松地使用-150x150
作为替换字符串,但是有不同的大小,它应该能够支持更多大小,而无需返回并编辑此代码。
我希望这里有人可以弄清楚我目前的正则表达式有什么问题。
答案 0 :(得分:4)
错误的是,在JavaScript中,正则表达式不是字符串,因此不要将它们用引号括起来。
请注意,您不需要\d
附近的括号:
$(this).prop('src', function (i, v) {
return v.replace(/-\d+x\d+\.jpg$/, '.jpg');
});
如果您可能还在使用其他图片格式,请改用:
$(this).prop('src', function (i, v) {
return v.replace(/-\d+x\d+\.(jpg|png|gif)$/, '.$1');
});
答案 1 :(得分:2)
正则表达式是JavaScript中的特定文字,它们不是作为字符串创建的。只需删除单引号:
$(this).attr('src').replace(/-[\d]+x[\d]+/, '')
请注意,replace
不能就地工作,而是返回结果字符串。因此,根据您是要进一步处理还是仅将其写回属性,您必须将其分配给某些内容。