【发布时间】:2026-02-07 01:40:01
【问题描述】:
我知道这已经被问过一千次了(抱歉),但是搜索 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 的其他地方存在,但我的搜索没有返回它,再次道歉..
【问题讨论】:
-
人们应该停止在 JS 变量前加上
$... JS 不是 PHP! -
抱歉 - 我整天都在用 PHP,将删除!
-
Re: poss 重复,所列问题中的正则表达式并没有回答我列出的所有标准..
-
你能接受答案吗?
标签: javascript jquery parsing url extract