1

我有以下正则表达式,它根据输入时的 http:// 来检测 url:

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

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

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

http://regexpal.com/
4

2 回答 2

1

您可以制作 http:// 和 www。可选的。可以用问号“?”来实现。这意味着该模式出现 0 次或 1 次。

((http|https|ftp|ftps)\:\/\/)?(www\.)?[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)
于 2013-10-18T16:25:06.390 回答
0

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

/^([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

于 2013-10-18T16:28:18.953 回答