1

我制作了一个正则表达式来匹配一些网址:

它必须匹配:协议 (http,https)、用户名 (username@ --if any)、passord(username:password@ --if any)、主机名(asdf.asdf(etc) 或 123.154.213.255 ) 端口(:80 - 如果有的话)和路径(以反斜杠开头,然后跟随 / 或 . 或任何字母或数字之间的任意组合)

到目前为止我的正则表达式:

\b(https?)://([a-z]*?@|[a-z]*?:[a-z]*?@)?((([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] 可能有很多次,但它不起作用。

4

1 回答 1

0

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

它使用一个条件,如果我找到了,/那么我会搜索a thru zand 0 - 9, /,.出现很多次。

((?(?=/)([a-z0-9]|/|\.)*|))
于 2013-10-20T09:33:24.207 回答