我知道这已经被问过一千次了(道歉),但是搜索 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!
例如。http://www.google.com、 google.com 、 www.google.com 、http://google.com、 ftp.google.com 、 https:// 等...及其任何带有查询字符串的派生词应该退货...
非常感谢,如果这存在于 SO 的其他地方,再次道歉,但我的搜索还没有返回它..