2016-06-11 77 views
0

如何从Node.js中的字符串中删除图像分辨率?从图像url中删除字符作为字符串检索?

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

'/ \ - \ d + x \ d + /'可以工作,但也许有点宽泛。 –

回答

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);  

你可以使用这个表达式,更换时指的匹配组。

0

你的正则表达式匹配的网址直至破折号和.jpg。替换将删除除了-800x800之外的所有内容。

请看看here为正则表达式的结果。

您可以使用regex.match并加入结果。或使用正则表达式替换这样的:

image = image.replace(new RegExp("-\d+x\d+", "g"), "") 
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); 
0

首先你的正则表达式匹配整个字符串,所以你应该得到一个空的结果。

然后,您不需要多次匹配“g”,而只需要在URL末尾删除该部分。

最后,你必须把替换字符串保存的文件扩展名。

使用正则表达式文字:

image = image.replace(/-\d+x\d+\.([^/]+)$/, ".$1"); 

不要在正则表达式的末尾忘记$字符。