首页 > 請問各位高手,如何用js檢查不可空白,至少6個字,必須包含英文字母、數字、特殊字元!

請問各位高手,如何用js檢查不可空白,至少6個字,必須包含英文字母、數字、特殊字元!

<!DOCTYPE html>
<html lang="zh-tw">
    <head>
    <meta charset="UTF-8"/>
        <title>html 練習</title>
        <script> 
         function chkP(){
                    var tPD=document.getElementById("idP").value;
                    var re=/^(?=.*\d)(?=.*[a-zA-Z])(?=.*\W).+$/;
                    if(tPD==" ")
                       window.alert("不能有空白");   

                    else if(tPD.length <=5)
                        window.alert("至少要6個字"); 

                    else if(re.test(tPD))
                     window.alert("正確!");    
                 }
        </script>
    </head>
    <body>
    密碼:<input type="text" id="idP" size="30" maxlength="30"/>
        <br><br>
        <input type="button" value="密碼檢查" onclick="chkP(); "/>

    </body>

    </html>

請問各位高手,,,以上是我的code ,但很明顯,我的正則表示式有錯,我該如何才能“檢查不可空白,至少6個字,必須包含英文字母、數字、特殊字元!”

謝謝!

ps:現在還差“檢查不可空白”這項沒完成~“~


  1. “檢查不可空白”如何实现: 我不确定你的不可空白指的是用户必须填写内容还是说用户填写的内容中不能包含空格等空白内容。因此我分别作答: 如果是前者,即必须填写内容。那可以在trim后判断用户输入的长度,如果为0就说明为空。 如果是后者,可以使用/[\t]+/这个正则进行测试,如果为真说明内容中有空白。

以下为针对提问者原问题的回答:

你写的是 javascript var reg = /^[a-zA-Z0-9]{6,}$/; 这个正则的意思是:全部以大小写字母或数字组成,至少6个字符。与你的需求有两处不符:

  1. 你要的是『必須包含英文字母、數字、特殊字元!』而实际上实现的是必须全部以XXXX组成,范围扩大了
  2. 你的要求中有特殊字符,但这个正则中没有(其实特殊字符并不是一个明确的范围,你最好把范围列举出来)

由于不知道你的特殊字符到底有哪些,我就先仅以!@#$%这四个作为特殊字符,给出一个例子 javascript var reg = /[a-zA-Z0-9!@\$%]{6,}/; 如果你有其他特殊字符,直接添加进去即可。注意,其中的$写作\$的原因是$在正则中有特殊含义,需要转义一下。


我不太会写正则,好像也没见过正则可以用AND之类的算法,所以我觉得是不是可以拆开来写呢,这样提示也更具体。

var str = document.getElementById("idP").value;
var has_letter = /[a-zA-Z]+/.test(str);
var has_number = /[0-9]+/.test(str);
var has_symbol = /[!@#$%^&*()]+/.test(str);
var enough_size = /[0-9a-zA-Z!@#$%^&*()]{6,}/.test(str);

【热门文章】
【热门文章】