2013-10-20 64 views
1

我做了一个正则表达式匹配一些网址:URL分析正则表达式

它必须匹配:协议(HTTP,HTTPS),用户名(用户名@ --IF有的话)的passord(用户名:密码@ - 如果有),主机名(asdf.asdf(etc)或123.154.213.255)端口(:80 - 如果有的话)和路径(以反斜杠开始,则它遵循/或。之间的任意组合或任何字母或数字)

我正则表达式至今:

\b(https?)://([a-z]*[email protected]|[a-z]*?:[a-z]*[email protected])?((([01][0-9][0-9]|2[0-4][0-9]|25[0-5]|[0-9]|[1-9][0-9])\.([01][0-9][0-9]|2[0-4][0-9]|25[0-5]|[0-9]|[1-9][0-9])\.([01][0-9][0-9]|2[0-4][0-9]|25[0-5]|[0-9]|[1-9][0-9])\.([01][0-9][0-9]|2[0-4][0-9]|25[0-5]|[0-9]|[1-9][0-9]))|([a-z]*\.?)*[a-z])(:[0-9]*)? 

它有点难以阅读。 我的问题是找到路径....直到现在我已经尝试(/?)找到第一个(可能)/然后我试图(/?/|\.|[a-z]|[0-9]*)匹配任何/或。或者[a-z0-9],但是很多时候都可以,但它不起作用。

+0

不要忘了IPv6的addressess(如通过'http:// [:: 1]:80 /') – Erbureth

+0

我只是在寻找我在我的问题描述,而不是实际的真实的URL网址的特定类型 – Thanatos

+0

你使用什么语言? – VladL

回答

0

我找到了正确的正则表达式!

它使用,如果我发现/然后我搜索a thru z0 - 9/,上面写着一个条件,. apearing无论多少次。

((?(?=/)([a-z0-9]|/|\.)*|))