我有一个包含一些 HTML 代码的字符串:
var myString = '<html> ... <script src="/cmn/libs/js/myJavascriptFile.js"></script>
<link rel="stylesheet" href="../assets/myCssFile.css"/> ... </html>';
我想匹配所有导入的文件,不带路径,如下所示:myJavascriptFile.js
,myCssFile.css
我尝试使用这个正则表达式
var myRegexp = /src="(.*)"|href="(.*)"/g;
var match = myRegexp.exec(myString);
但它给了我整个路径,我想如果导入有单引号,它会失败。这里最好的方法是什么?谢谢
这是我所做的测试:https://regex101.com/r/gL8lO7/2
最佳答案
var html = document.getElementById("data").value;
var res = [];
html.replace(/(?:src|href)=(["'])(?:.*?)([^\\/"]*?)\1/g, function (match, quote, name) {
res.push(name);
})
console.log(res);
textarea { display: block; width: 100%; }
<textarea id=data><html> ... <script src="/cmn/libs/js/myJavascriptFile.js"></script>
<link rel="stylesheet" href='../assets/myCssFile.css'/> ... </html></textarea>
关于导入脚本中文件名的 javascript 正则表达式 (js/css),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37655817/