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

ops/2024/9/20 1:26:49/ 标签: javascript, 开发语言, ecmascript

在项目中经常有生成随机字符串的需求,比如验证接口签名、验证码(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.ppmy.cn/ops/44465.html

相关文章

探索旅行的优惠之选,千益畅行旅游卡让旅程更省心省力!

在旅行的道路上&#xff0c;一张旅游卡往往能为您带来意想不到的便利与优惠。那么&#xff0c;对于千益畅行旅游卡&#xff0c;您是否好奇如何轻松拥有它呢&#xff1f; 首先&#xff0c;千益畅行旅游卡作为旅行者的贴心伴侣&#xff0c;为您提供了多样化的获取渠道。您可以通…

Flutter 中的 SelectableText 小部件:全面指南

Flutter 中的 SelectableText 小部件&#xff1a;全面指南 在 Flutter 应用开发中&#xff0c;展示文本是常见需求之一&#xff0c;SelectableText 是 Flutter 提供的一个用于显示可选文本的小部件。它允许用户选择文本的一部分或全部&#xff0c;进行复制等操作&#xff0c;这…

WordPress安装插件失败No working transports found

1. 背景&#xff08;Situation&#xff09; WordPress 社区有非常多的主题和插件&#xff0c;大部分人用 WordPress 都是为了这些免费好用的主题和插件。但是今天安装完 WordPress 后安装插件时出现了错误提示&#xff1a;“ 安装失败&#xff1a;下载失败。 No working trans…

设计模式10——装饰模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 装饰模式 是一种结构型模式。…

Java 文件操作和输入输出流

在 Java 编程中&#xff0c;文件操作和输入输出流是非常常见和重要的任务&#xff0c;它们允许你读取和写入文件、处理数据流等。 文件操作概述 文件操作是指对文件进行创建、读取、写入、删除等操作的过程。在 Java 中&#xff0c;文件操作通常涉及到使用文件对象、输入输出…

基于香橙派搭建家庭网盘

一、概述 家庭网盘是一种用于家庭用户的在线存储和文件共享服务。它允许家庭成员在云端存储、同步和分享照片、视频、文档等文件&#xff0c;方便快捷地访问和管理个人和家庭数据。家庭网盘通常提供安全可靠的数据存储和备份功能&#xff0c;保障用户数据的安全性。此外&#x…

java项目级云MES源码(制造执行系统) springboot + vue-element-plus-admin生产制造业MES系统源码

java项目级云MES源码&#xff08;制造执行系统) springboot vue-element-plus-admin生产制造业MES系统源码 MES系统通过信息传递对从订单下达到产品完成的整个生产过程进行优化管理。当工厂发生实时事件时&#xff0c;MES制造执行系统功能的发挥重点体现在及时做出反应、报告&…

高效编写大模型 Prompt 提示词,解锁 AI 无限创意潜能

随着 ChatGPT 的出现&#xff0c;AI 成为新的焦点&#xff0c;有人说过“未来 50%的工作将是提示词工作”&#xff0c;目前很多公司也在开始招聘 Prompt 提示词工程师。Prompt&#xff08;提示词&#xff09;成为了连接创意与技术的桥梁&#xff0c;它不仅是简单的指令&#xf…

Rom应用开发遇到得一些小bug

记录一些细碎得bug ROM时间类问题 问题描述&#xff1a; 设备拔电重启&#xff0c;ROM时间为默认时间如1970年1月1日&#xff0c;与某些业务场景互斥 问题原因&#xff1a; 后台接口校验https证书校验失败&#xff0c;要求是2年内得请求头校验了时间戳&#xff0c;时间戳过期…

leetcode-560 和为k的数组

一、题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 注意&#xff1a;nums中的元素可为负数 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2输入&#xff1a;num…

MyBatisPlus实现多表查询

前言 在现代Web开发中,数据操作层的高效与灵活至关重要。MyBatisPlus(简称MP)作为MyBatis的增强工具,凭借其简洁的API设计和丰富的功能,极大地简化了数据库操作,尤其是在处理复杂查询如多表关联查询时展现出了独特的优势。本文将通过一个实际案例——使用MyBatisPlus实现…

【Zotero】【MacOS】Zotero6常用插件总结

因为目前MacOS只支持Zotero6&#xff0c;所以我将网上找到的教程以及自己找到适应Zotero6版本的插件做了个整合 教程地址&#xff1a;Zotero6安装/插件安装教程 插件地址&#xff1a;Zotero6_Plugs

docxtemplater避坑!!! 前端导出word怎么插入本地图片或base64 有完整示例

用docxtemplater库实现前端通过模板导出word&#xff0c;遇到需求&#xff0c;要插图片并转成word并导出&#xff0c;在图片转换这块遇到了问题&#xff0c;网上查示例大多都跑不通&#xff0c;自己琢磨半天&#xff0c;总算搞明白了。 附上清晰完整示例&#xff0c;供参考。 …

搭建电商电子商务平台有哪些好用的电商API数据采集接口?

电商API接口主要用于帮助开发者将电商功能集成到自己的应用程序中&#xff0c;实现诸如商品检索、商品价格数据获取、订单处理、支付、物流跟踪等功能。以下是一些常用的电商API接口提供商&#xff1a; 主流电商平台API&#xff1a; 淘宝开放平台&#xff1a;提供淘宝、天猫、…

智能的PHP开发工具PhpStorm v2024.1全新发布——支持PHPUnit 11.0

PhpStorm是一个轻量级且便捷的PHP IDE&#xff0c;其旨在提高用户效率&#xff0c;可深刻理解用户的编码&#xff0c;提供智能代码补全&#xff0c;快速导航以及即时错误检查。可随时帮助用户对其编码进行调整&#xff0c;运行单元测试或者提供可视化debug功能。 立即获取PhpS…

AI PC 的曙光:微软大胆出击与苹果竞争

AI PC 的曙光&#xff1a;微软大胆出击与苹果竞争 AI PC 的曙光&#xff1a;微软大胆出击与苹果竞争 概述 微软已正式进入 AI PC 时代&#xff0c;并且毫不避讳地直接向苹果的 MacBook 发起攻击。随着代号为“Copilot”的笔记本电脑的推出&#xff0c;微软准备彻底改变我们与…

顺序表以及实现(结构篇)

顺序表是一种线性表的存储结构&#xff0c;它使用一组地址连续的存储单元依次存储线性表的数据元素。在顺序表中&#xff0c;逻辑上相邻的元素在物理存储上也相邻&#xff0c;通常采用数组来实现这种存储方式。 前言&#xff1a; 顺序表格的特点&#xff1a; 随机访问&#x…

检索模型预训练方法:RetroMAE

论文title&#xff1a;https://arxiv.org/pdf/2205.12035RetroMAE: Pre-Training Retrieval-oriented Language Models Via Masked Auto-Encoder 论文链接&#xff1a;https://arxiv.org/pdf/2205.12035 摘要 1.一种新的MAE工作流&#xff0c;编码器和解器输入进行了不同的掩…

IP协议说明

文章目录 前言一、IP协议的简介二、IP数据报1.IP 数据报结构2.IP 数据报的分片解析3.IP 数据报的分片重装 三、IP 数据报的输出四、IP 数据报的输入 前言 IP 指网际互连协议&#xff0c; Internet Protocol 的缩写&#xff0c;是 TCP/IP 体系中的网络层协议。设计 IP 的目的是…

基于jeecgboot-vue3的Flowable流程-我的任务(一)

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、首先可以用现成生成代码的前端来做这个&#xff0c;只要做一些调整就可以了&#xff0c;这样利用现有的一些模板可以快速构建我的任务&#xff0c;否则vue2与vue3相差太大&#xff0c;移…