我知道这个问题之前已经被问过一千次了(抱歉),但是搜索 SO/Google 等我还没有得到结论性的答案。
基本上,我需要一个 JS 函数,当传递一个字符串时,它会根据正则表达式识别并提取所有 URL,返回所有找到的数组。例如:
function findUrls(searchText){
var regex=???
result= searchText.match(regex);
if(result){return result;}else{return false;}
}
该函数应该能够检测并返回任何潜在的 url。我知道这个固有的困难/问题(右括号等),所以我觉得这个过程需要是:
分割字符串 (searchText
)进入不同的部分(开始/结束),其两侧要么没有任何内容,要么有空格或回车符,从而产生不同的内容块,例如进行拆分。
对于分割产生的每个内容块,查看它是否符合任何构造的 URL 的逻辑,即它是否包含紧跟在文本后面的句点(用于限定潜在 URL 的一个常量规则)。
正则表达式应查看句点后是否紧跟其他文本(其类型为 tld、目录结构和查询字符串允许的类型),并且其前面是否为 URL 允许类型的文本。
我知道可能会导致误报,但是随后将通过调用 URL 本身来检查任何返回的值,因此可以忽略这一点。我发现的其他函数通常也不返回 URL 查询字符串(如果存在)。
因此,该函数应该能够从一段文本返回任何类型的 URL,即使这意味着将 will.i.am 识别为有效 URL!
eg. http://www.google.com http://www.google.com、 google.com、 www.google.com、http://google.com http://google.com,
ftp.google.com、https:// 等...及其带有查询字符串的任何派生
应该归还...
非常感谢,如果这在其他地方存在,但我的搜索没有返回它,再次道歉。