2010-07-04 61 views
3

我有一個註冊表單,用戶在創建帳戶時可以進入其選擇的子域。javascript/jquery中的子域名驗證

http://_________.ourapp.com 

我希望他們只能在_​​___________________部分輸入有效字符。我爲此使用了一個文本字段。

在這種情況下是否存在函數或某種模式?空格應該被過濾,我猜很多或所有的特殊字符(數字,短劃線和字母除外)?

+0

是的。如果你發佈了一些HTML表單,你可能會得到一些例子。而且,測試你想要的東西比你不想要的要容易。 – 2010-07-04 22:41:56

回答

3

你可以使用正則表達式來實現你所需要的。

嘗試是這樣的:

<input id="username" type="text" onblur="validSubdomain()" /> 


function validSubdomain() { 
    var re = /[^a-zA-Z0-9\-]/; 
    var val = document.getElementById("username").value; 
    if(re.test(val)) { 
     alert("invalid"); 
    } 
} 
0

嘗試if(subdomainName.match(/^[a-z0-9][a-z0-9\-]*[a-z0-9]$/))) {...what to do if valid here...} else {...invalid handling here...} - 我認爲應該工作。

0

Javascript 1.2及更高版本支持正則表達式。這幾乎是每個瀏覽器。

使用「數字短劃線和字母」作爲可接受子域的示例,您可以執行類似於以下內容的操作,可能在點擊表單上的「提交」按鈕時運行(並且如果匹配失敗,則取消提交)。

entry.Match(/^[a-zA-Z0-9\-]+$/) 

沒有更多的具體信息我真的不能給你一個完整的例子,但這應該讓你到你需要去的地方。當然,請記住,對於健壯的網站,JavaScript驗證並不完整。您需要在服務器端重新檢查這一點,以防止JavaScript禁用的人員(或最壞的情況下爲惡意用戶)。

-3

所以你的問題是, 「規則做什麼有效的互聯網域名遵循?」

這個問題的答案是:

  • 它只能包含:
    • 英文字母(不區分大小寫)
    • 數字(0-9)
    • 連字符/減號的26個字母( - )
  • 必須啓動並以字母或數字結束,不是連字符;
  • 標籤長度必須在1到63個字符之間;
  • 整個主機名不能超過255個字符

域名由多個標籤,每個用句點分隔。 ourapp.com的直接子域將是ben.ourapp.com,其中ben,ourappcom是每個標籤。但是,您也可以選擇允許用戶在其子域內包含句點,例如:

ben.franklin.ourapp.com 
i.have.a.clever.vho.st 

在這種情況下,你可以允許用戶的子域長於63個字符(63 *子域中的週期數,與244最大尺寸(.ourapp.com是11個字符長) 。

關於有效主機名的詳細信息,請參閱this Wikipedia article

編輯:。如果你想支持internationalized domain names,事情就變得有點複雜,但仍在可控範圍