2013-12-09 89 views
1

我想出了以下正則表達式來匹配有效的url。如何捕獲正則表達式中.com後的URL部分?

^(?:(ftp|http|https):\/\/)?(?:[a-zA-Z]+\.){0,1}(?:[a-zA-Z0-9][a-zA-Z0-9-]+){1}(?:\.[a-zA-Z]{2,6})?$ 

匹配(ftp | http | https)可選,域名沒有.com或任何東西,但我也想捕獲.com後的所有內容。

上述正則表達式驗證http://stackoverflow.comlocalhostgoogle.com但不http://stackoverflow.com/questions/ask

回答

1

爲了配合其餘的URI,你可以在結尾處添加\S*

^(?:(ftp|http|https):\/\/)?(?:[a-zA-Z]+\.){0,1}(?:[a-zA-Z0-9][a-zA-Z0-9-]+){1}(?:\.[a-zA-Z]{2,6})?(\/|\/\w\S*)?$

但解析URL的各個組成部分是使用更好built-in parse_url function.

替代val IDATE本地URL:

^(?:(ftp|http|https):\/\/)?(?:[a-zA-Z0-9.]+\.){0,1}(?:[a-zA-Z0-9][a-zA-Z0-9-]+){1}(?:\.[a-zA-Z]{2,6})?(\/|\/[\w#!:.?+=&%@!\-\/]*)?$

例如:172.18.11.178

演示:http://regex101.com/r/vV0sB5

+0

它使'localhost.'有效的URL這是錯誤的。 – codef0rmer

+0

正則表達式或'parse_url'函數? – anubhava

+0

嘗試'https:// www.debuggex.com /'並將您的正則表達式粘貼到第一個文本框中並運行一些測試。 – codef0rmer

相關問題