现在的位置: 首页 > 综合 > 正文

使用javascript的str和substr方法验证非法字符

2013年10月12日 ⁄ 综合 ⁄ 共 2023字 ⁄ 字号 评论关闭

    虽然验证非法字符有N多种方法,今天老师就让用str写个验证字符串,我也是迫不得已憋了好半天才写出来,哎,身不由己呀!这只是我的一个思路,如果大家有别的见解,不要吝啬,提给我嗯,哈!

    首先先说我的大概这么一个思路吧:用str定义允许输入的字符,利用二层循环改变循环前初始好的这么一个状态值,最后由状态值判断出字符是否合法。

用到的知识点呢无非就是循环,字符截取等。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>str判断非法字符</title>
</head>

<body>
<script language="javascript" type="text/javascript">
//列出和合法的字符strLength
var str="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
//计算出str的长度
var strLength = str.length;
function checkNum(){
    //获取输入的字符
    var str2 = document.getElementById("num").value;
    //计算出输入字符的长度
    var str2Length = str2.length;
    //设置状态值,循环中只要有一个字符不合法此状态的值将不会改变
    var clearFlag=false;
    
        for(i=1;i<=str2Length;i++){
            //这最外层循环,在此将取出第一个将要验证的字符与列出的合法字符中的每一个比较,每比较完一个之后clearFlag的状态值将再次被初始化,然后验证下一个字符
            clearFlag=false;
            var str3 = str2.substr(i-1,1);
            //外边循环只是取出第一个验证的字符,而在这才将会把第一个取出的字符与合法字符中
            //的每一个比较,验证中,只要有相同的说明这个字符合法,所以改变状态值为true,然后跳出本次循环就可以了,

                for(j=1;j<=strLength;j++){
                //document.write(str4);
                    var str4 = str.substr(j-1,1);
                        if(str4==str3){
                               clearFlag=true;
                                //再此强调下break的用的法,在多层循环中,break只跳出一层。
                                break;
                            }       
                    }
                    //如果在你验证中只要有一个字符不合法这说明的这个字符串都不合法,所以我在每次验证完一个字符后就判断状态值,
                    //只要为false就说明本次内循环遇到的是一个非法字符,所以直接跳出循环就可,
                    //这样会少去很多没必要的验证,因为已经证明是非法字符了,就没必要再向后运行验证

                    if(clearFlag==false){
                        break;                     
                        }
            }
            //最后判断false就是不合法,相反true则是合法的!
            if(clearFlag){
                alert("你输入的是合法字符!");
            }else{
                alert("你输入的不是合法字符!");
                }

    }
   
</script>
<!--写个表单,也就是简单的验证,有文本框和一个按钮就可以了,使用onclick调用函数判断输入的字符-->
<input type="text" id="num">
<input type="button" value="输入合法字符" onclick="checkNum()">
</body>
</html>

抱歉!评论已关闭.