私はこの定期的な例外があります:
(?:([^\:]*)\:\/\/)?(?:([^\:\@]*)(?:\:([^\@]*))?\@)?(?:([^\/\:]*)\.(?=[^\.\/\:]*\.[^\.\/\:]*))?([^\.\/\:]*)(?:\.([^\/\.\:]*))?(?:\:([0-9]*))?(\/[^\?#]*(?=.*?\/)\/)?([^\?#]*)?(?:\?([^#]*))?(?:#(.*))?
1)URLを解析する場合:http ://test.ru/long/path/file.ext?queryparam = 123&more =234 -OK
2)URLを解析する場合: ftp:// admin :pass@server.com/long/path/file.ext-OK
3)ただし、GETパラメータに[AT](@)が存在する場合は、正しく機能しません。
例:http ://test.ru/long/path/file.ext?queryparam = 123&mail = test @ domain.com
PS。定期的な例外はstackoverflowで見つかりますが、トピックを覚えていません。:(