2016-08-01 34 views
-1

私が持っているアプリケーションでいくつかのURLを検証しようとしています。私はURLを渡すことができますし、正規表現に従ってURLが有効な場合はtrueまたはfalseを返します。Javascript isURL Function

一般的な日常URLではこれが機能していますが、確認のためのファイル共有に必要なURLがいくつかあります。

私は下の関数に組み込むことができるファイルホールダーに使う良いパターンか、これがすでに存在する場合にはこのバリデーションを含むjQueryプラグインを見つけようとしています。

alert(isURL('\\server-123.somedomain.com\path\to\file.txt')); // Returns False 

function isURL(str) { 
    var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol 
    '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.?)+[a-z]{2,}|'+ // domain name 
    '((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address 
    '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path 
    '(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string 
    '(\\#[-a-z\\d_]*)?$','i'); // fragment locator 
    return pattern.test(str); 
} 

編集:

私が示した例ではその正確なパス構造に一致するようにそれを必要としません。私は一般的にファイル共有を許可するパターンが必要です。提案ポストhere

+0

[Javascript URL validation regex]の複製があります。(http://stackoverflow.com/questions/18364404/javascript-url-validation-regex) –

+1

@Haroldo_OKこれは典型的な(http/s/ftp)構造を検証するだけです。私はファイル共有 '\\ fileshare-path \ something.txt'に加えてそれを探しています – SBB

+0

'新しいURL()の周りにtry catchブロックを使用してください –

答えて

2

でそのように述べたように私の質問は、あなたはおそらく、あなたができる

^(https?:\/\/)?((([a-z\d]([a-z\d-]*[a-z\d])*)\.?)+[a-z]{2,}|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*(\?[;&a-z\d%_.~+=-]*)?(\#[-a-z\d_]*)?$|^((\\(\\[^\s\\]+)+|([A-Za-z]:(\\)?|[A-z]:(\\[^\s\\]+)+))(\\)?)$ 

、この正規表現を試みるかもしれファイル共有構造のURLとHTTP/S/FTP一般的ではないに固有のものですこれをテストしてください:https://regex101.com/r/nE9mZ2/1

+0

これは私の上記の関数の別の条件として含めることができますか?ファイル共有構造を満たすだけですか? – SBB

+0

現在、ファイル共有パスの検証のみを行います。両方を統合する必要があります。 –

+0

正規表現を私が上で提供したものと組み合わせるためには、| (pipe)symbol between –