2009-03-27 2 views
1

Я ищу выражение «bulletproof» preg для проверки URL-адреса. Регулярное выражение должно быть верно для следующих адресовpreg для проверки URL-адреса

 
ftp://[email protected] 
http://hh-1hallo.msn.blabla.com:80800/test/test/test.aspx?dd=dd&id=dki 
http://twitter.com/test 
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd 
telnet://example.org:8888 
http://www.google.com/search?q=good+url+regex&rls=com.microsoft:*&ie=UTF-8&oe=UTF-8&startIndex=&startPage=1 
ftp://joe:[email protected] 
https://some-url.com?query=&name=joe?filter=*.*#some_anchor 

Но должен вернуться ложным следующее:

http .org /TR/xhtml1/DTD/xhtml1-transitional.dtd 
http://hh-1hallo. msn.blablabla.com:80800/test/test.aspx?dd=dd&id=dki 
google.com 
example.org 
+0

Просто добавлено регулярное выражение, подтверждающее, что вы хотите – VonC

ответ

0

Что с веб-сайта, как (раздел «URL») RegExLib.com?

Вы должны найти то, что вам нужно, и проверить его на себе.

Во всяком случае, это регулярное выражение подтверждает то, что вы хотите, и исключаете то, что вы не хотите.

(?ms)^(https?|ftp|telnet):\/\/((?:(?:(?=[^\r\n]*@)\w|-)+(?:(?::)(?:\w|-)+)?)?)@?((?:(?:(?:\w|-)+)\.)+(?:\w|-)+)(\:\d+)?((?:(?:/(?:\w|-)+(?:\.(?:\w|-)+)?)+)?)((?:\?(?:(?:\w|-)+\=(?:\w|[\.\-\*\:\+\#])*\&?)+)*)$ 

с:

  • группы 1: протокол
  • группа 2: имя пользователя [: пароль]
  • группа 3: домен (www.xxx)
  • группа 4: пусто
  • группа 5: адрес (XX/yyy/zzzz)
  • группа 6: параметры (? Key1a = value1a?key2a = value2a key1b = value1b & key2b = value2b ...)
+0

ничего плохого в этом, но я нашел это: ((http | ftp | https): \/\/[\ w \ -_] + (\. [\ W \ - _] +) + ([\ w \ - \., @?^=% &:/~ \ + #] * [\ w \ - \ @?^=% &/~ \ + #])?), который не возвращает true для ftp: //[email protected] – 2009-03-27 18:29:21

0

Здесь вы идете:

\^(https?|ftp|telnet):\/\/((?:[[email protected]:.-]|%[0-9A-F]{2}){3,})(?::(\d+))?((?:\/(?:[a-z0-9-._~!$&'()*+,;=:@]|%[0-9A-F]{2})*)*)(?:\?((?:[a-z0-9-._~!$&'()*+,;=:\/[email protected]]|%[0-9A-F]{2})*))?(?:#((?:[a-z0-9-._~!$&'()*+,;=:\/[email protected]]|%[0-9A-F]{2})*))?$/i 

Это было основано на коде найти здесь: http://snipplr.com/view/6889/regular-expressions-for-uri-validationparsing/ с несколькими изменениями.

Вы можете проверить его на этой странице: http://regexpal.com/ (вставьте регулярное выражение, как:

^(https?|ftp|telnet):\/\/((?:[[email protected]:.-]|%[0-9A-F]{2}){3,})(?::(\d+))?((?:\/(?:[a-z0-9-._~!$&'()*+,;=:@]|%[0-9A-F]{2})*)*)(?:\?((?:[a-z0-9-._~!$&'()*+,;=:\/[email protected]]|%[0-9A-F]{2})*))?(?:#((?:[a-z0-9-._~!$&'()*+,;=:\/[email protected]]|%[0-9A-F]{2})*))? 

и выберите "нечувствительно к регистру")

Удачи!

+0

спасибо. но это также соответствует http: // примеру – 2009-03-27 19:01:28

+1

@friex - обратите внимание, что http: // example - это действительно действительный url. – 2009-03-27 19:17:42

+0

@depesz Да, я знаю, но мне не нужно его проверять – 2009-03-27 19:21:58

Смежные вопросы