我有一個註冊表單,用戶在創建帳戶時可以進入其選擇的子域。javascript/jquery中的子域名驗證
http://_________.ourapp.com
我希望他們只能在____________________部分輸入有效字符。我爲此使用了一個文本字段。
在這種情況下是否存在函數或某種模式?空格應該被過濾,我猜很多或所有的特殊字符(數字,短劃線和字母除外)?
我有一個註冊表單,用戶在創建帳戶時可以進入其選擇的子域。javascript/jquery中的子域名驗證
http://_________.ourapp.com
我希望他們只能在____________________部分輸入有效字符。我爲此使用了一個文本字段。
在這種情況下是否存在函數或某種模式?空格應該被過濾,我猜很多或所有的特殊字符(數字,短劃線和字母除外)?
你可以使用正則表達式來實現你所需要的。
嘗試是這樣的:
<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");
}
}
嘗試if(subdomainName.match(/^[a-z0-9][a-z0-9\-]*[a-z0-9]$/))) {...what to do if valid here...} else {...invalid handling here...}
- 我認爲應該工作。
Javascript 1.2及更高版本支持正則表達式。這幾乎是每個瀏覽器。
使用「數字短劃線和字母」作爲可接受子域的示例,您可以執行類似於以下內容的操作,可能在點擊表單上的「提交」按鈕時運行(並且如果匹配失敗,則取消提交)。
entry.Match(/^[a-zA-Z0-9\-]+$/)
沒有更多的具體信息我真的不能給你一個完整的例子,但這應該讓你到你需要去的地方。當然,請記住,對於健壯的網站,JavaScript驗證並不完整。您需要在服務器端重新檢查這一點,以防止JavaScript禁用的人員(或最壞的情況下爲惡意用戶)。
所以你的問題是, 「規則做什麼有效的互聯網域名遵循?」
這個問題的答案是:
域名由多個標籤,每個用句點分隔。 ourapp.com
的直接子域將是ben.ourapp.com
,其中ben
,ourapp
和com
是每個標籤。但是,您也可以選擇允許用戶在其子域內包含句點,例如:
ben.franklin.ourapp.com
i.have.a.clever.vho.st
在這種情況下,你可以允許用戶的子域長於63個字符(63 *子域中的週期數,與244最大尺寸(.ourapp.com
是11個字符長) 。
關於有效主機名的詳細信息,請參閱this Wikipedia article
編輯:。如果你想支持internationalized domain names,事情就變得有點複雜,但仍在可控範圍
是的。如果你發佈了一些HTML表單,你可能會得到一些例子。而且,測試你想要的東西比你不想要的要容易。 – 2010-07-04 22:41:56