我试图从链接中获取 href,从脚本标签中获取 src。 由于这是我第一次使用正则表达式,所以我对分组、否定和条件选择的工作原理还不够了解。
这就是我目前所拥有的
(\/|\.\/)((^([http|https]:\/\/))*.*?\w+)([a-zA-Z]\w+)(?=\.(js|css|ts)\b)(.*?\w+)
在这种情况下工作:
<script src="./script.js"/>
<script src="/script.js"/>
<script src="/my/custom/dir/script.js"/>
<!--Theme same for links-->
不起作用的情况:
<script src="https://my.cdn.fav/script.js"/>
<script src="http://my.cdn.fav/script.js"/>
或者它确实考虑了起始的 http 和 https,但没有选择它们。 正是这部分做错了
(\/|\.\/)((^([http|https]:\/\/))
根据您的输入字符串,您可以将您不想匹配的所有内容替换为
.replace(/<script\ssrc="|"\/>/g, " ").split(/[\n\s]+/).filter(Boolean)
let matches = `<script src="https://my.cdn.fav/script.js"/>
<script src="http://my.cdn.fav/script.js"/><script src="./script.js"/>
<script src="/script.js"/>
<script src="/my/custom/dir/script.js"/>`.replace(/<script\ssrc="|"\/>/g, " ").split(/[\n\s]+/).filter(Boolean);
console.log(matches);