修改正则表达式以检测 URL


modifying regex to detect urls

我有以下正则表达式,它根据输入时具有 http://来检测一个网址:

(http|https|ftp|ftps)':'/'/[a-zA-Z0-9'-'.]+'.[a-zA-Z]{2,3}('/'S*)

因此,如果我输入上述内容 http://www.google.com 这很好用。但是,如果我错过了 http://,甚至WW。它不会将上述内容检测为 URL。

有没有一种简单的方法可以调整上述内容以接受没有 http://或 www 的 url。 即使我真的不知道正则表达式是如何完全工作的?我一直在玩以下网站:

http://regexpal.com/

您可以将 http://和 www. 设为可选。它可以通过问号"?"来实现,问号表示模式出现 0 或 1

((http|https|ftp|ftps)':'/'/)?(www'.)?[a-zA-Z0-9'-'.]+'.[a-zA-Z]{2,3}('/'S*)

对于更完整的正则表达式匹配:

/^([a-z][a-z0-9'*'-'.]*):'/'/(?:(?:(?:['w'.'-'+!$&''(')*'+,;=]|%[0-9a-f]{2})+:)*(?:['w'.'-'+%!$&''(')*'+,;=]|%[0-9a-f]{2})+@)?(?:(?:[a-z0-9'-'.]|%[0-9a-f]{2})+|(?:'[(?:[0-9a-f]{0,4}:)*(?:[0-9a-f]{0,4})']))(?::[0-9]+)?(?:['/|'?](?:['w#!:'.'?'+=&@!$'~*,;'/'(')'[']'-]|%[0-9a-f]{2})*)?$/xiS