2012-02-16 3 views
0

私はURL正規表現の両方のWebおよびLDAP URLを検証する

私はjavascriptの

のためにそれを使用します
+0

'ldap://192.442.242.244:389'は有効なIPではありません。 – xfix

答えて

0

(IP用)
^(http://|https://|ldap://|ldaps://)((\\d{1,3}\\.){3}\\d{1,3}(:\\d{1,5})?)$
ただし、 ther urls ...サイトが応答するかどうかを確認する必要があります。それはサイトと言うことができるのでwwsw.comとあなたの正規表現は、それが本当のサイトかどうかを知るべきですか?サブドメインwwswを持つ実際のサイトが存在する可能性があります。
編集:
GlitchMrが正しくあります。 IPv4の場合、正規表現を使用します。

1
m{ (?:ldap|http)s?://     # Scheme 

(?:(?!.*\d[/?:]) [a-z0-9\-._~%]+  | # IPv4 host (forbid ending with digit) 
    # IP (yep, I've copied this regexp) 
    (?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]) 
    \[[a-z0-9\-._~%!$&'()*+,;=:]+\]) # or IPv6 host 

(?::\d+)?       # Port 

(?: 

    [/?]        # Slash or question mark 

    [-A-Z0-9+&@#/%?=~_|$!:,.;]*  # URL itself 

)? # Technically, trailing/is required in URLs, but many browser implementations ignore it when accepting those 
               }ix 

この正規表現は、/ixで動作するはずです。 JSには/x修飾語は含まれていないので、私はそれを除いてバージョンを含めるつもりです。文字の多くは%マークを使用してエスケープせずにHTTP URLで許可されていることを

/(?:ldap|http)s?:\/\/(?:(?!.*\d[\/?:])[a-z0-9\-._~%]+|(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\[[a-z0-9\-._~%!$&'()*+,;=:]+\])(?::\d+)?(?:[\/?][\-A-Z0-9+&@#\/%?=~_|$!:,.;]*)?/i 

注意。おそらく、URLに許可されている文字が含まれているため、URLが通過しないようにすることは望ましくありません。* :)。

+0

https://stackoverflow.comでは機能しません。エクスプレスツールでチェックしました。 –

+0

@imrantariq:OK、スラッシュのない '? 'を許可することで意図的にHTTP標準を破棄しました。ちなみに、http://wwsw.stackoverflow.comは技術的に有効なURLです。そのようなサブドメインを作ることは完全に可能です。 URLが存在するかどうかを確認することは、正規表現の範囲外です。実際のネットワーク接続が必要です。 – xfix