0

我正在尝试为一个覆盖以“file://”开头的每个超链接的 javascript 项目创建一个正则表达式

谢谢 :)

4

4 回答 4

0

超链接具有位置属性-

您可以从链接中读取 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
于 2012-10-13T13:09:33.867 回答
0
/^file\/\/:/i.test(str)
str.match(/^file\/\/:\S+/i)

除了协议,我不会检查任何其他内容,URI 非常复杂。

于 2012-10-13T11:41:21.283 回答
0

这是这个家伙开发的一个非常彻底的版本:

(?i)\b((?:file:(?:\/{2}))(?:www\d{0,3}[.]|[a-z0-9\-]+[.])?(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

编辑:显然我需要更改一些内容以使其更加严格。我已经更新了它。如果要使用捕获组,请删除 ?: 以保留反向引用。

请使用更简单的,/(file:\/{2,3}[!#$&-;=?-\[\]_a-z~]+)/

于 2012-10-13T11:10:08.063 回答
0

试试这个

/^(file?://)?([\da-z.-]+).([az.]{2,6})([/\w .-] ) /?$/

享受 :)

于 2012-10-13T11:11:35.097 回答