各位大哥,,我现在需要一个用js 判断当前字符串必须包括字母,数字,特殊符号的方法,请各位大哥帮帮忙!

解决方案 »

  1.   

    var test="sdf123#$";
    var reg = new RegExp("^[a-zA-Z0-9#$%]+$","gi");
    alert(test.replace(reg,"").length==0?"Success":"Fault");
      

  2.   

     <script>
     /*************************************************
        Validator v1.01
        code by 我佛山人
        [email protected]
        http://www.cunite.com
    *************************************************/
     Validator = {
        Require : /.+/,
        Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
        Phone : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,
        Mobile : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,
        Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
        IdCard : /^\d{15}(\d{2}[A-Za-z0-9])?$/,
        Currency : /^\d+(\.\d+)?$/,
        Number : /^\d+$/,
        Zip : /^[1-9]\d{5}$/,
        QQ : /^[1-9]\d{4,8}$/,
        Integer : /^[-\+]?\d+$/,
        Double : /^[-\+]?\d+(\.\d+)?$/,
        English : /^[A-Za-z]+$/,
        Chinese :  /^[\u0391-\uFFE5]+$/,
        UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,
        IsSafe : function(str){return !this.UnSafe.test(str);},
        SafeString : "this.IsSafe(value)",
        Limit : "this.limit(value.length,getAttribute('min'),  getAttribute('max'))",
        LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",
        Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",
        Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",
        Range : "getAttribute('min') < value && value < getAttribute('max')",
        Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",
        Custom : "this.Exec(value, getAttribute('regexp'))",
        Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",
        ErrorItem : [document.forms[0]],
        ErrorMessage : ["以下原因导致提交失败:\t\t\t\t"],
        Validate : function(theForm, mode){
            var obj = theForm || event.srcElement;
            var count = obj.elements.length;
            this.ErrorMessage.length = 1;
            this.ErrorItem.length = 1;
            this.ErrorItem[0] = obj;
            for(var i=0;i<count;i++){
                with(obj.elements[i]){
                    var _dataType = getAttribute("dataType");
                    if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")  continue;
                    this.ClearState(obj.elements[i]);
                    if(getAttribute("require") == "false" && value == "") continue;
                    switch(_dataType){
                        case "Date" :
                        case "Repeat" :
                        case "Range" :
                        case "Compare" :
                        case "Custom" :
                        case "Group" : 
                        case "Limit" :
                        case "LimitB" :
                        case "SafeString" :
                            if(!eval(this[_dataType]))    {
                                this.AddError(i, getAttribute("msg"));
                            }
                            break;
                        default :
                            if(!this[_dataType].test(value)){
                                this.AddError(i, getAttribute("msg"));
                            }
                            break;
                    }
                }
            }
            if(this.ErrorMessage.length > 1){
                mode = mode || 1;
                var errCount = this.ErrorItem.length;
                switch(mode){
                case 2 :
                    for(var i=1;i<errCount;i++)
                        this.ErrorItem[i].style.color = "red";
                case 1 :
                    alert(this.ErrorMessage.join("\n"));
                    this.ErrorItem[1].focus();
                    break;
                case 3 :
                    for(var i=1;i<errCount;i++){
                    try{
                        var span = document.createElement("SPAN");
                        span.id = "__ErrorMessagePanel";
                        span.style.color = "red";
                        this.ErrorItem[i].parentNode.appendChild(span);
                        span.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"*");
                        }
                        catch(e){alert(e.description);}
                    }
                    this.ErrorItem[1].focus();
                    break;
                default :
                    alert(this.ErrorMessage.join("\n"));
                    break;
                }
                return false;
            }
            return true;
        },
        limit : function(len,min, max){
            min = min || 0;
            max = max || Number.MAX_VALUE;
            return min <= len && len <= max;
        },
        LenB : function(str){
            return str.replace(/[^\x00-\xff]/g,"**").length;
        },
        ClearState : function(elem){
            with(elem){
                if(style.color == "red")
                    style.color = "";
                var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];
                if(lastNode.id == "__ErrorMessagePanel")
                    parentNode.removeChild(lastNode);
            }
        },
        AddError : function(index, str){
            this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];
            this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str;
        },
        Exec : function(op, reg){
            return new RegExp(reg,"g").test(op);
        },
        compare : function(op1,operator,op2){
            switch (operator) {
                case "NotEqual":
                    return (op1 != op2);
                case "GreaterThan":
                    return (op1 > op2);
                case "GreaterThanEqual":
                    return (op1 >= op2);
                case "LessThan":
                    return (op1 < op2);
                case "LessThanEqual":
                    return (op1 <= op2);
                default:
                    return (op1 == op2);            
            }
        },
        MustChecked : function(name, min, max){
            var groups = document.getElementsByName(name);
            var hasChecked = 0;
            min = min || 1;
            max = max || groups.length;
            for(var i=groups.length-1;i>=0;i--)
                if(groups[i].checked) hasChecked++;
            return min <= hasChecked && hasChecked <= max;
        },
        IsDate : function(op, formatString){
            formatString = formatString || "ymd";
            var m, year, month, day;
            switch(formatString){
                case "ymd" :
                    m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));
                    if(m == null ) return false;
                    day = m[6];
                    month = m[5]--;
                    year =  (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
                    break;
                case "dmy" :
                    m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));
                    if(m == null ) return false;
                    day = m[1];
                    month = m[3]--;
                    year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
                    break;
                default :
                    break;
            }
            if(!parseInt(month)) return false;
            month = month==12 ?0:month;
            var date = new Date(year, month, day);
            return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate());
            function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}
        }
     }
    </script>
      

  3.   

    ^[a-zA-Z]+[0-9]+[你的特殊符号]+$
      

  4.   

    function checkValidate(test){
    if(test.replace(/[a-zA-Z]/).length==test.length) return false;
    if(test.replace(/[0-9]/).length==test.length) return false;
    if(test.replace(/[#$%]/).length==test.length) return false;
    return true;
    }
    //alert(checkValidate("a_1#$")); 
      

  5.   

    谢谢各位大哥热心帮忙,,问题搞定了,,解决思路如下;
    1:先循环遍历找出字符串中的字母
    2:在循环找出字符串中的数字。
    3:然后在找字符串中不是字母,数字的,
    4:判断如果这三个条件同时大于0的话符合条件,否则不符合;
    代码如下://----------begin--------------------------------------------------
                function vPass(v_pw){
    if(v_pw.length < 11){
    Ext.MessageBox.alert('提示','密码长度不能小于11位');
    return false;
        }
    var patrn_shuzi=/^[0-9]$/; 
    var patrn_zimu=/^[a-z]|[A-Z]$/;
    var patrn_teshu=/^[^A-Za-z0-9]$/;
    var flag=0;
    var s = v_pw.split('');
        
    for(var i=0;i<s.length;i++){
      if (patrn_shuzi.exec(s[i])) {
         flag = flag+1;
         break;
      }
    }
    for(var i=0;i<s.length;i++){
      if (patrn_zimu.exec(s[i])) {
        flag = flag+1;
         break;
      }
    }
    for(var i=0;i<s.length;i++){
      if (patrn_teshu.exec(s[i])) {
         flag = flag+1;
         break;
      }
    }
    if (flag != 3) {
    Ext.MessageBox.alert('提示','密码必须由数字,字母,特殊符号组成!');
    return false;
    }
    }
    // -------------end---------------