2016-04-18 59 views
1

我需要驗證一個url。驗證URL沒有任何http,https或ftp

var urlPattern = new RegExp("(http|ftp|https)://[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\[email protected]?^=%&/~+#-])?"); 

如果URL有httphttpsftp我可以驗證。如果該網址沒有httpftphttps意味着我如何驗證?

+0

如果你很高興你當前的正則表達式是正確的,但你只想驗證_without_任何協議,你可以刪除協議部分:'(http | ftp | https)://'? –

回答

0

嘗試以下操作:

var regex = new RegExp("^(http[s]?:\\/\\/(www\\.)?|ftp:\\/\\/(www\\.)?|www\\.){1}([0-9A-Za-z-\\[email protected]:%_\+~#=]+)+((\\.[a-zA-Z]{2,3})+)(/(.)*)?(\\?(.)*)?"); 
var without_regex = new RegExp("^([0-9A-Za-z-\\[email protected]:%_\+~#=]+)+((\\.[a-zA-Z]{2,3})+)(/(.)*)?(\\?(.)*)?"); 
var str = "url"; 
if(regex.test(str) || without_regex.test(str)){ 
    alert("Successful"); 
}else{ 
    alert("No match"); 
} 

它接受以下網址:

https://example.com 
http://example.com 
ftp://example.com 
www.example.com 
https://www.example.com 
http://www.example.com 
ftp://www.example.com 
example.com 
+0

如何改變這個/ ^((http(s?)| ftp):\/\ /)?[A-z0-9 _ \ - \。] + ...檢查沒有http和https的URL。 – kalles

0

我希望這將有助於

var url = 'http://www.Jamboo.com'; 
var correctUrl= /^(ftp|http|https):\/\/[^ "]+$/.test(url); 
    // true 

var r = /^(ftp|http|https):\/\/[^ "]+$/; 
    r.test('http://www.Jam boo.com'); 
    // false 
+0

如何改變這個'/ ^((http(s?)| ftp):\/\ /)?[A-z0-9 _ \ - \。] + ...'檢查一個沒有http的URL並且https – kalles

+0

I需要接受爲沒有http和https的URL也 – kalles

+0

嘗試替換此/ ^:\/\/[^「] + $ /。test(url); –

0

正則表達式

/((:(HTTP | HTTPS | FTP)://)(:((:?????[^ \ W \ S] | | - | [ :{1})+)@ {1})((?: WWW)(?:?。[^ \ W \ S] | | - )+ [] [^ \ W \ s]的{2 ,4} |本地主機(?= /)| \ d {1,3} \ d {1,3} \ d {1,3} \ d {1,3})(::(\ d。? *?))?([/]?[^ \ s \?] [/] {1})(?:/?([^ \ s \ n \?[] {}#] )({。}){1} | [^ \ s \ n \?[] {}。#])?([。] {1} [^ \ s \?#] )?)?(?: \ {1}([^ \ S \ N#[]]))?([#] [^ \ S \ n]的*)?)分升/克

HTML

<input type= text id = 'url'> 

JS

$('#url').on('blur', function() { 
    var val = $(this).val(); 
    if(val.match(/\(?(?:(http|https|ftp):\/\/)?(?:((?:[^\W\s]|\.|-|[:]{1})+)@{1})?((?:www.)?(?:[^\W\s]|\.|-)+[\.][^\W\s]{2,4}|localhost(?=\/)|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?::(\d*))?([\/]?[^\s\?]*[\/]{1})*(?:\/?([^\s\n\?\[\]\{\}\#]*(?:(?=\.)){1}|[^\s\n\?\[\]\{\}\.\#]*)?([\.]{1}[^\s\?\#]*)?)?(?:\?{1}([^\s\n\#\[\]]*))?([\#][^\s\n]*)?\)?/g) != null) 
     alert('success'); 
}) 

DEMO

或者使用:

$('#url').on('blur', function() { 
    var urlPattern = new RegExp("((http|ftp|https)://)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:/~+#-]*[\[email protected]?^=%&amp;/~+#-])?"); 
    var val = $(this).val(); 
    if(urlPattern.test(val)) { 
    alert('success'); 
    } else { 
    alert('fail') 
    } 
}) 

DEMO

+0

如何改變這個/ ^((http(s?)| ftp):\/\ /)?[A-z0-9 _ \ - \。] + ...檢查沒有http和https的URL。 – kalles

+0

'var urlPattern = new RegExp(「((http | ftp | https)://)?[\ w-] +(\。[\ w-] +)+([\ w。,@?^ =% &:/〜+# - ] * [\ w @?^ =%& /〜+# - ])?「);''也適用 –

0

看着@Shubham Khatri的正則表達式,我會建議(如果可能的話)使用外部工具如wgetcurl來查詢地址並檢查結果。

相關問題