我目前的正则表达式是这样的
/\.(jpe?g|png|gif|svg)$/i
我尝试修改它以支持匹配,当扩展程序在其结尾处获取参数时,所有以下格式都匹配
../fonts/fontawesome-webfont.svg
../fonts/fontawesome-webfont.svg?v=4.3.0
../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular'
如何修改它以支持这些?
答案 0 :(得分:3)
假设要解析的网址遵循proper formatting(其中只有一个'?'分隔符可用于表示查询的开头),您可以这样做:
/\.(jpe?g|png|gif|svg)(?:\?.*|)$/i
var urls = [
'../fonts/fontawesome-webfont.svg',
'../fonts/fontawesome-webfont.svg?v=4.3.0',
'../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular'
];
var matches = urls.map(function(url) { return url.match(/\.(jpe?g|png|gif|svg)(?:\?.*|)$/i); });
document.write('<pre>' + JSON.stringify(matches, null, 2) + '</pre>');
&#13;
或者您可以使用节点url.parse()
:
var url = require('url');
var urlObj = url.parse(URL_STRING);
var matches = urlObj.pathname.match(/\.(jpe?g|png|gif|svg)$/i);