2014-05-07 39 views
0

什麼是最好的正則表達式,我可以使用的客戶端驗證表單的URL;Javascript正則表達式的serverName:端口

example.com:8080 (Valid) 
10.15.123.14:8080 (Valid) 
example.com (Invalid) 
10.15.123.14 (Invalid) 

協議「http」不是必需/必需的。事實上,這不屬於我的表單領域。

+0

'/:[1-9] [0-9] * $ /'? – h2ooooooo

回答

2

我會的東西是這樣的/^([a-z0-9\-]+\.)+[a-z0-9]+\:[1-9][0-9]+$/i

var str = [ 
    "Example.com:8080", 
    "10.15.123.14:8080", 
    "example.com", 
    "10.13.123.14", 
    "example!1.com:8080", 
    "example-1.com:8080", 
    "example!1.com:8080", 
    "example\1.com:8080", 
    "example1.com:8" 
    ]; 

var regex = /^([a-z0-9\-]+\.)+[a-z0-9]+\:[1-9][0-9]+$/i; 

for(var i=0; i < str.length; i++) { 
    $('#test').append(regex.test(str[i])+"</br>"); 
} 

http://jsfiddle.net/thinkingmedia/2SnhP/5/

+0

這也會匹配'google.com:0'。 – h2ooooooo

+0

@ h2ooooooo true ..嗯...我會改進它:) – cgTag

+1

..現在你需要的只是錨點,因爲沒有它們你會匹配':)我知道一個網站:google.com:8080是一個網站你不想去'。 – h2ooooooo

1

匹配ip的,直到255.255.255.255和端口,直到65535:

^((([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])|[a-zA-Z0-9]*):(6553[0-5]|655[0-2][0-9]\d|65[0-4](\d){2}|6[0-4](\d){3}|[1-5](\d){4}|[1-9](\d){0,3})$ 

匹配的網站(或IP的)和端口直到65535:

^[^:]+:(6553[0-5]|655[0-2][0-9]\d|65[0-4](\d){2}|6[0-4](\d){3}|[1-5](\d){4}|[1-9](\d){0,3})$ 
+0

+1,但它會是**方式**更好的解析字符串而不使用正則表達式。 – h2ooooooo