2010-04-16 74 views
1

我有一個用於檢查域的單一表單輸入。有時候人們輸入www。之前的域名或.com域名。我用來檢查可用性的服務會自動檢查所有頂級域名,以便人們在最後添加.com時會變得多餘。例如,提交的字符串是domainname.com.com,顯然是無效的。Javascript表單驗證/消毒我需要這裏的正則表達式嗎?

我知道你可以在服務器端做到這一點,但由於一些相當奇怪的情況,我必須使用JavaScript來做到這一點。那麼正則表達式的解決方案在這裏?如果有的話,我可以使用某種正則表達式生成器,或者有人可能用代碼片段指向正確的方向?

感謝任何幫助謝謝!

+0

如果用戶禁用Javascript,該怎麼辦? – Cyclone 2010-04-16 02:13:02

+0

然後他們得到一個可行的表格,但他們必須足夠聰明,不會在他們的域名後面鍵入.com。我意識到這個問題。有時候骯髒的問題需要髒解 – user318144 2010-04-16 02:15:26

回答

1

This page有一個例子Regex。

function isUrl(s) { 
    var regexp = /^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$/ 
    return regexp.test(s); 
} 

這是另一個example

function isUrl(s) { 
    var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ 
    return regexp.test(s); 
} 
1

那麼,正則表達式是一種可能的解決方案。您可以像這樣剝離常見TLD:

input = input.replace(
    /\.(?:com|net|org|biz|edu|in(?:t|fo)|gov|mil|mobi|museum|[a-z][a-z])$/i, ""); 

這是您尋找的那種東西嗎?