2009-03-27 12 views
1

私は、URLを検証するための '防弾'プレグ式を探しています。 正規表現は、以下のアドレス URLを検証するためのpreg

 
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 

のために真でなければなりません。しかし、以下にfalseを返す必要があります:

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

RegExLib.com( "URL" を参照)のようなウェブサイトと間違っていますか?

必要なものを見つけて、自分でテストしてください。

とにかく、この正規表現はあなたが望むものを検証し、あなたが望まないものを除外します。

(?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 \ - \ @?^ =%& /? ftp://[email protected] –

0

あなたが行く:いくつかの編集とhttp://snipplr.com/view/6889/regular-expressions-for-uri-validationparsing/

\^(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 

これは、こちらのコードに基づいていました。 (として正規表現を貼り付けます。

^(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})*))? 

をし、 "大文字と小文字を区別" を選択) http://regexpal.com/ は:

幸運を

このページでそれをテストすることができます!

+0

ありがとうございました。 http:// example –

+1

@friexと一致します。http:// exampleは完全に有効なURLであることに注意してください。 –

+0

@depeszええ私は知っていますが、検証する必要はありません –

関連する問題