Javascript正则表达式删除扩展名之后的所有内容

Javascript regex remove everything after .extension

本文关键字:之后 正则表达式 删除 扩展名 Javascript      更新时间:2023-09-26

我有以下示例URL,需要对进行消毒

http://image.s5a.com/is/image/saks/0447522591096_647x329.jpg" border="0" params="">

进入

http://image.s5a.com/is/image/saks/0447522591096_647x329.jpg

我的问题是,无论扩展名是.jpg、.png还是.jpeg,我都应该使用哪种正则表达式来灵活地删除扩展名之后的所有内容?

此外,扩展后的文本和符号也会有所不同。

感谢

(.*?(?:jpg|png|jpeg))|.*

试试这个。替换为$1。请参阅演示。

http://regex101.com/r/rQ6mK9/47

您可以使用:

var s = 'http://image.s5a.com/is/image/saks/0447522591096_647x329.jpg" border="0" params="">';
var r = s.replace(/^(.+?'.(png|jpe?g)).*$/i, '$1');
//=> http://image.s5a.com/is/image/saks/0447522591096_647x329.jpg

regex的一个替代方案是只使用基本的字符串解析。

var fullUrl = 'http://image.s5a.com/is/image/saks/0447522591096_647x329.jpg" border="0" params="">';
var baseUrl = fullUrl.split(' ')[0];

编辑:你可能还想解码url,这样你就不会被%编码绊倒。

var fullUrl = 'http://image.s5a.com/is/image/saks/0447522591096_647x329.jpg" border="0" params="">';
var fullUrl = decodeURI(fullUrl);
var baseUrl = fullUrl.split(' ')[0];

你不应该自己尝试做这样的事情。所有语言都有用于阅读HTML的库,而且它们比自己阅读更可靠。如果这是客户端javascript,则可以使用jQuery;那么,如果element是表示HTML元素的jquery对象,则element.attr('src')将是src属性的值。