当前位置: 首页 > news >正文

js怎么生成验证码?js生成指定长度的随机字符串

在项目中经常有生成随机字符串的需求,比如验证接口签名、验证码(Node.js发送短信或邮箱验证码、生成图片验证码),我们可以使用Javascript生成随机字符。

使用随机数从给出的可能字符中抽取合并字符串

优点是可以自定义结果中字符的取值,比如添加下划线等特殊字符、剔除大小写字母O、L等容易与数字0和1难以区分的字符。

包含数字和大小写字母

// 获取指定长度的随机字符串(包含数字和大小写字母)
function getRandomString(length) {var len = length || 6var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'var result = ''for (var i = 0; i < len; i++) {var index = Math.floor(Math.random() * chars.length)result += chars[index]}return result
}// test
getRandomString()
// 'BDbP17'
// 'gCoGYX'
// 'OFmkBI'getRandomString(10)
// 'eTpDQ1tyCj'

上面的代码中,getRandomString方法接收一个 length 可选参数(默认为 6),执行该方法将返回随机字符,如需其他长度的字符串只需要调用该方法时传入长度即可。

只包含数字的字符串

// 获取指定长度的数字字符串(常用于短信验证码)
function getRandomNumberString(length) {var len = length || 6var chars = '0123456789'var result = ''for (var i = 0; i < len; i++) {var index = Math.floor(Math.random() * chars.length)result += chars[index]}return result
}// test
getRandomNumberString()
// '940377'
// '366477'
// '766066'

随机十六进制字符串

// 随机十六进制字符串
// 此方法由于随机数位数有限,最大长度为13(偶尔结果字符串长度只有12自行按需补位)
function getRandomHexString(length) {var len = length || 6if (len > 13) {throw new Error('getRandomHexString(length) length 不能大于13')}return Math.random().toString(16).substring(2, 2 + len)
}// test
getRandomHexString()
// 'e97a45'

以上三个方法即可涵盖大部分验证码需求,主要是node.js做服务,千万不要在前端生成验证码然后用 canvas 等方式绘制验证码!

http://www.lryc.cn/news/355806.html

相关文章:

  • Python魔法之旅-魔法方法(01)
  • 介绍下 npm 模块安装机制,为什么输入 npm install 就可以自动安装对应的模块
  • vue2如何父组件 对象 双向绑定子组件
  • [Android]在后台线程执行耗时操作,然后在主线程更新UI
  • 平方回文数-第13届蓝桥杯选拔赛Python真题精选
  • 位置编码(三) 2D旋转位置编码
  • 1、pikachu靶场之xss钓鱼复现
  • 弘君资本炒股技巧:股票定向增发是什么意思?是好是坏?
  • vue3项目使用pinia状态管理器----通俗易懂
  • 零基础学Java第二十五天之Lambda表达式
  • VSCode配置Lua5.4安装
  • CI/CD:持续集成/持续部署
  • ComfyUI工作流网站
  • 【机器学习】机器学习基础概念与初步探索
  • 学英语材料:单口喜剧、讲故事、短剧喜剧以及广播剧和播客节目
  • Docker Compose使用
  • 如何优雅的卸载linux上的todesk
  • 【Vue】el-checkbox多选框实现单选效果,选中一个选项则自动取消其他勾选
  • Linux中使用vi编辑器自动缩进4个字符
  • #笔记#笔记#其他
  • gtask笔记
  • 【Linux学习】深入探索进程等待与进程退出码和退出信号
  • Linux:线程
  • 卡到BUG了:删除重发白得积分(以前删除会扣减积分)
  • 轻松拿捏C语言——【字符函数】字符分类函数、字符转换函数
  • 【Rust日报】ratatui版本更新
  • 力扣每日一题 5/28
  • async函数和await函数
  • Redis面试题深度解析
  • Ubuntu 22.04 .NET8 程序 环境安装和运行