2014-02-11 28 views
1

我希望用戶名後面的文本框應該只接受字母或數字或它們的組合。如果用戶輸入除字母或數字之外的任何內容,則在單擊按鈕時應出現警告對話框。我的代碼是:驗證用戶名在html中

<html> 
<body> 

<form name="f1"> 
username <input type="text" name="tb1"><br> 
<input type="button" value="validate" onclick="val()"> 
</form> 

<script> 
function val() 
{ 
if(document.f1.tb1.value=="") 
    alert('Enter username!'); 
} 
</script> 

</body></html> 

任何人都可以告訴我解決方案嗎?

+1

你需要看看'RegExp' – putvande

回答

2

val功能使用正則表達式:

function val() 
{ 
    if(document.f1.tb1.value=="") 
     alert('Enter username!'); 
    if(/[^a-zA-Z0-9]/.test(document.f1.tb1.value)) 
     alert('Username must only consist of letters and numbers') 
} 

什麼這行代碼看看,如果你傳遞給test字符串具有比A-Z,A-Z和0-9的任何其他。如果是這樣,那麼它會發出警報。如果你願意接受一個下劃線作爲一個有效的字符,則if變得簡單多了:

if(/[\W]/.test(document.f1.tb1.value)) 

\w是代表所有的數字,字符和下劃線的快捷方式。該[^...]語法的意思是「不匹配此列表中的任何字符。\W實際上是​​一個快捷方式,並尋找任何不包括AZ,az,0-9和_。

編輯,按您的評論

如果你只希望接受字母字符,你只是測試的AZ而不是添加在你的表達0-9:

if(/[^a-zA-Z]/.test(document.f1.tb1.value)) 

此檢查的document.f1.tb1.value價值,看它是否有任何不是字母的東西,即a-z和A-Z之外的任何東西。

有很多關於正則表達式的文檔。一旦你理解了這個概念,我使用MDN作爲參考。

+0

如果我想,只有字母或字母和數字的組合應該被接受,那麼我該怎麼辦? – user3298056

+0

我已經列出的代碼顯示瞭如何檢查它只是字母或數字。我添加了一個編輯,顯示如何檢查它只是按字母順序排列。 –

+0

對於A-Z,a-z,0-9和_你提到使用以下語句:if(/ [\ W] /。test(document.f1.tb1.value))。如果我想包含「。」 ,那我該用什麼? – user3298056

0

這個怎麼樣?

編輯:

function val() 
{ 
    if(document.f1.tb1.value == null || 
     document.f1.tb1.value == undefined || 
     /[^a-zA-Z0-9]+/.test(document.f1.tb1.value)) 

     alert('invalid username!'); 
} 
+0

爲什麼要用'+'呢?只要你有一個角色,測試已經失敗。另外,解釋也很好。你的代碼是做什麼的?用戶如何從中學習,而不是複製粘貼? –

+0

@Scott Mermelstein我檢查返回false;首先,因爲如果將null傳遞給'.test',我當然不知道發生了什麼。 –

+0

檢查'if(!document.f1.tb1.value)'是否檢查真實性。它檢查document.f1.tb1是否爲空,不是未定義,不是「」,不是0,並且不是假。 (說到這一點,如果0是一個有效的用戶名,該檢查將不會接受它。) –