2011-06-06 48 views
11

一直在使用JavaScript,我試圖做的只是允許某些字符在pass字段中 - a-z,A-Z和0-9。如何只允許使用JavaScript的Alpha數字字符

<form action="http://www.cknuckles.com/cgi/echo.cgi" method="get" name="logOn"> 
    User Name:<br /> 
    <input type="text" name="userName" size="25" /><br /> 
    Password:<br /> 
    <input type="password" name="pw" size="25" /><br /> 
    <input type="submit" value="Log In" onClick="validate()"/> 
</form> 

以上是我的HTML,下面是我嘗試用來驗證它的JavaScript - 但它不工作 - 任何線索。

<script language="javascript"> 
    document.logOn.onsubmit=validate; 

    function validate(){ 

var name=document.logOn.pw.value; 
    if(!name = "[a-zA-Z0-9]"){    
alert("Your Password Cant Have Any Funky Things In It - Play It Straight!"); 
    return false; 
}    

    return true; 
} 
</script> 

但這不工作。我仍然可以把字符放在像「*」和「[」和「{」等。

任何想法?

回答

25

你需要讓你的條件測試一個正則表達式,而不是一個字符串:

if(!/^[a-zA-Z0-9]+$/.test(name)){ ... 

含義:

  • ^ - 線
  • 開始
  • [a-zA-Z0-9]+ - 一個或多個字符/號碼
  • $ - 行尾

,或者你可以搜索的是倒數,這是「任何非接受的字符」:

if(/[^a-zA-Z0-9]/.test(name)){ 
+0

你可以發佈一個正在運行的小提琴的例子...我用上面的代碼取代了上述代碼塊,它不工作.. – Lucky 2013-01-02 06:35:12

+0

這個問題是18個月大。如果您遇到問題,請發佈新問題。 – 2013-01-03 01:07:34

+0

一個不錯的和乾淨的解決方案,謝謝。 – Sanjeev 2014-07-03 06:37:52

4
if (name.match(/[\W_]/)) { //... 

意義,如果「名」字符串有這是一個非字母數字的任何字符或下劃線然後執行該塊。請注意,我們必須單獨檢查下劃線(_),因爲字母數字字符類(\w)包含下劃線(所以負類(\W)不是而不是)。

相關問題