2017-04-21 5 views
0

「http://」「https://」「ftp://」「mailto://」のないURLが表示されるように、以下の正規表現を変更するにはどうすればよいですか?有効に戻ってきますか? REGEXは、URLを検証するためのvalidator.jshttpを使わないURLのJavascriptの正規表現

var url = 'www.test.com'; 
isURL(url); 

function isURL(url) { 
    var urlRegex = '^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)[email protected])?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$'; 
    var urlT = new RegExp(urlRegex, 'i'); 
    if(!(url.length < 2083 && urlT.test(url))) 
    { 
     alert("invalid url"); 
    } 
    else 
    { 
     alert("valid url"); 
    } 
} 
+0

これらがなければ、おそらく他のものとマッチするでしょう。 '' ab.ab.ab "'と '' This.text "' ... –

+0

@Rahul私はhttp://、https://、ftp://、mailto://が必要です。 – ConfusedDeer

+0

Sidnode:URLとEメールアドレスは正規表現では検証できません。あなたは "look-valid-format"のみを検証することができます - 唯一の真の妥当性検証は、確認メールを送信するか、DNSサーバがURLが存在するかどうかを問い合わせることです。 – dognose

答えて

2

奇妙な要件から取られています。

しかし、あなたはvalidation.jsを使用している場合は、この(?:(?:http|https|ftp)://)?

1

よう?を使用して(?:(?:http|https|ftp)://)オプションをすることによってそれを行うことができ、プロトコルのマッチングを無効にするオプションをサポートしているようだ:

isURL (str [、options]) - 文字列がURLかどうかを確認します。オプションは、デフォルトで{protocol:['http'、 'https'、 'ftp']、require_tld:true、require_protocol:false、require_host:true、require_valid_protocol:true、allow_underscores:false、host_whitelist:false、host_blacklist: false、allow_trailing_dot:false、allow_protocol_relative_urls:false}を返します。

だから、あなただけ行うことができます:

var isUrl = validator.isUrl(url, {require_protocol:false, require_valid_protocol:false}); 

それがデフォルトであるようですがが見えますので、多分あなたは直接ライブラリを使用していません。