多个正则表达式将文件扩展名与版本匹配

时间:2015-07-15 15:00:25

标签: regex node.js

我目前的正则表达式是这样的

/\.(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'

如何修改它以支持这些?

1 个答案:

答案 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;
&#13;
&#13;

或者您可以使用节点url.parse()

var url = require('url');
var urlObj = url.parse(URL_STRING);
var matches = urlObj.pathname.match(/\.(jpe?g|png|gif|svg)$/i);