Javascript 正则表达式html文件href/src url模式
建立一个电子应用程序,为您提供任何网站的所有颜色 为此,应用程序会像下载url一样将其保存为html。 现在,该应用程序读取html文件并搜索链接到可能包含颜色值rgb/rgba//hsl的文件的任何url,因此这些文件将是css、js、svg等。这些url被添加到数组中,稍后由electron download manager包使用 例如:[href=/main.css?v=33.1,src=http://somesite.com/js/regex.js] href=/src=被其他函数删除 我的url模式是:Javascript 正则表达式html文件href/src url模式,javascript,regex,electron,Javascript,Regex,Electron,建立一个电子应用程序,为您提供任何网站的所有颜色 为此,应用程序会像下载url一样将其保存为html。 现在,该应用程序读取html文件并搜索链接到可能包含颜色值rgb/rgba//hsl的文件的任何url,因此这些文件将是css、js、svg等。这些url被添加到数组中,稍后由electron download manager包使用 例如:[href=/main.css?v=33.1,src=http://somesite.com/js/regex.js] href=/src=被其他函数删除
/(href|src)=("|')(.*?)(\.|\/)(css|js|svg|json)(.*?)("|')/g
这很好,但它不会在结束引号符号上结束匹配/
第一个示例的匹配是整行,它包含结束引号之后的所有内容,因此title=是url的一部分,这没有任何意义
href="https://www.youtube.com/opensearch?locale=de_DE" title="YouTube"><link rel="manifest" href="/manifest.json" // matches everything until json is found
src="bla.css" // works
src='bla.css?ver=123.456' // works
是否有一条正则表达式规则规定按此字符停止
我的规则应该是:
以href=,url开头,以.css/.js结尾,可选文件版本?v=123,引号符号
一个正则表达式,用于查找具有src或href属性且其值包含以下内容之一的任何标记 扩展或子目录css、js、svg、json如下: /']|[^]*.'[^']*'*?\shref | src\s*=\s*?:[']\s*?:\2[\S\S]*?[.\/]:css | js | svg | json?:\2[\S\S]*?\S*\2\S+?:[\S\S]*?|'[\S\S]*?'|[^>]*?+>/ 其中: 属性位于组1中 值在第3组中 扩大
< [\w:]+ # Any tag
(?= # Assert (a pseudo atomic group)
(?: [^>"'] | " [^"]* " | ' [^']* ' )*?
\s
( href | src ) # (1), href or src attribute
\s* = \s*
(?:
( ['"] ) # (2), Quote
\s*
( # (3 start), value
(?:
(?! \2 )
[\S\s]
)*?
[./] # One of these extensions or sub-dirs
(?: css | js | svg | json )
(?:
(?! \2 )
[\S\s]
)*?
) # (3 end)
\s*
\2
)
)
\s+
(?: " [\S\s]*? " | ' [\S\s]*? ' | [^>]*? )+
>
相反,然后使用类似parsedDoc.querySelectorAll'link.forEach的东西。。。获取hrefs。要在何处使用not运算符?在正则表达式中,^是一个not运算符,您可以这样使用它