如何从Node.js中的字符串中删除图像分辨率?
http://asset.beyonce.com/wp-content/uploads/2016/06/XIII6614-800x800.jpg
我希望它只是
http://asset.beyonce.com/wp-content/uploads/2016/06/XIII6614.jpg 没有-800x800!
var image = 'http://asset.beyonce.com/wp-content/uploads/2016/06/XIII6614-800x800.jpg';
image = image.replace(new RegExp("^(.*?)-\d+x\d+\.([^/]+)$", "g"), "")
console.log(image);
以上代码由于某种原因无效?
答案 0 :(得分:1)
var image = 'http://asset.beyonce.com/wp-content/uploads/2016/06/XIII6614-800x800.jpg';
image = image.replace(/^(.*?)(-\d+x\d+)(\.[^/]+)$/, "$1$3");
console.log(image);
您可以使用此正则表达式,在替换时引用匹配的组。
答案 1 :(得分:0)
您的正则表达式匹配破折号和.jpg
的网址。而替换将删除除-800x800
之外的所有内容。
请查看here以获取正则表达式的结果。
您可以使用regex.match
并加入结果。或者像这样使用正则表达式替换:
image = image.replace(new RegExp("-\d+x\d+", "g"), "")
答案 2 :(得分:0)
主要问题是正则表达式没有达到你想要的效果。
另请注意,new RegExp
有点矫枉过正,因为您可以在正斜杠中立即定义它。
下面的代码应该有所帮助。
var image = 'http://asset.beyonce.com/wp-content/uploads/2016/06/XIII6614-800x800.jpg';
image = image.replace(/-\d+x\d+\./g, "")
console.log(image);
答案 3 :(得分:0)
首先你的正则表达式匹配整个字符串,所以你应该得到一个空的结果。
然后你不需要多次匹配的“g”,你只需要删除URL末尾的部分。
最后,你必须在替换字符串中输入保存的文件扩展名。
使用regexp literal:
image = image.replace(/-\d+x\d+\.([^/]+)$/, ".$1");
在正则表达式结束时不要忘记 $ 字符。