zoukankan      html  css  js  c++  java
  • 使用JavaScript随机生成数字混合字母的验证码

     
    
    
    
    
    <script>
        // 封装一个随机生成数字的函数
        function random(a, b) {
            var n = Math.round(Math.random() * (a - b) + b);
            return n;
        }
        
    //=====================================有漏洞版=============================================
        function getCode(){
            //定义一个字符串把所有可能都装进去,全部字母以及数字
            var codeStr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    
            //声明一个空的字符串,用作装随机生成的四个数。
            var str = "";
    
            //写一个循环用来重复随机生成几个数,以及将东西一个一个放进上面声明的空字符串内
            for (var i = 0; i < 4; i++) {
                var m = random(0,61);
                str += codeStr.charAt(m);
            }
            // 在外面调用函数时,一定要在函数内写返回值
            return str;
        }
        
        //调用函数
        console.log(getCode());
    //====================================更为严谨版==============================================
    
    //运行一下上面的代码我们会发现,字母出现的几率远远大过数字出现的几率。这是因为codeStr里面的字母有52个,
    //  数字却只有10个,而这样并不能算是真正的随机。故我补充了下面的代码。
    
    
    //思路:做一个随机生成数的库strData,循环四次,每次都会产生大写字母、小写字母、数字 各三个,也就是说strData
    //      里面放了12个数。再在strData库中随机(这样的随机才是真正的随机,每种可能的几率都是相同的)抽取四个数,
    //      放在新声明的str里,并且输出
    
    
    
        //封装一个随机生成数的库
        function randomStr(){
            var strData = "";
            //如果觉得12个数太少也可以多放点,将i<4修改即可
            for(var i=0;i<4;i++){
                var num = random(0,9);                              //数字
                var upper = String.fromCharCode(random(65,90));     //大写字母
                var lower = String.fromCharCode(random(97,122));    //小写字母
                strData = strData+num+upper+lower;                  //将所有结果放进strData中
                
            }
            var str = "";
            for (var i = 0; i < 4; i++) {
                str += strData[random(0,strData.length-1)];         //在strData里面随机抽取四个数
            }
            return str;
    
        }
        
        console.log(randomStr())
    
    
    </script>
    
    
    
     
  • 相关阅读:
    K2 的Workspace 遭遇400 RequestLength 错误修复
    从APM角度上看:NoSQL和关系数据库并无不同
    Mono的Google Native Client(NaCl)技术支持
    FastReport.Mono 一款为Mono Framework设计的功能全面的报表生成工具
    修改 Windows Host 文件工具
    采用Mono进行移动开发图书推荐
    MonoDevelop添加NuGet支持
    WCF Service Hosting的线程关联性Mono实现比.NET统一?
    [转]WiX v3.7——支持MSBuild、自更新及引用计数
    [转]度量驱动开发
  • 原文地址:https://www.cnblogs.com/funseey/p/11392278.html
Copyright © 2011-2022 走看看