我正在尝试为一个覆盖以“file://”开头的每个超链接的 javascript 项目创建一个正则表达式
谢谢 :)
超链接具有位置属性-
您可以从链接中读取 document.links[0].protocol。
var links=document.links, L=links.length, filelinks=[];
while(L){
if(links[--L].protocol=='file:')filelinks.push(links[L].href);
}
//eg:
filelinks.join('\n')
file:///C:/webworks/gallery/gallery.html
file:///C:/webworks/library/shared/dewey.html#holmes
file:///C:/webworks/library/shared/dewey.html#twain
file:///C:/webworks/library/shared/dewey.html
/^file\/\/:/i.test(str)
str.match(/^file\/\/:\S+/i)
除了协议,我不会检查任何其他内容,URI 非常复杂。
这是这个家伙开发的一个非常彻底的版本:
(?i)\b((?:file:(?:\/{2}))(?:www\d{0,3}[.]|[a-z0-9\-]+[.])?(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))
编辑:显然我需要更改一些内容以使其更加严格。我已经更新了它。如果要使用捕获组,请删除 ?: 以保留反向引用。
请使用更简单的,/(file:\/{2,3}[!#$&-;=?-\[\]_a-z~]+)/
试试这个
/^(file?://)?([\da-z.-]+).([az.]{2,6})([/\w .-] ) /?$/
享受 :)