0

输入 URL:http://somewpsite.com/wp-content/uploads/2012/10/IMG_1234-150x150.jpg 预期输出 URL:http://somewpsite.com/wp-content/uploads/2012/10/IMG_1234.jpg 当前正则表达式:$(this).attr('src').replace('/-[\d]+x[\d]+/', '');

假设$(this)代表一个img元素。我知道我可以-150x150像替换字符串一样轻松使用,但是有不同的大小,它应该能够支持更多大小,而无需返回并编辑此代码。

我希望这里有人能弄清楚我上面当前的正则表达式有什么问题。

4

2 回答 2

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');
});
于 2012-11-14T19:12:23.953 回答
2

正则表达式是 JavaScript 中的特定文字,它们不是作为字符串创建的。只需删除单引号:

$(this).attr('src').replace(/-[\d]+x[\d]+/, '')

请注意,replace这不是就地工作,而是返回结果字符串。因此,取决于您是要进一步处理它还是只是将其写回属性中,您必须将其分配给某些东西。

于 2012-11-14T19:12:36.090 回答