<form id="login-form"> <div class="mb-3"> <div class="input-group" style="margin-left: 23%;margin-right: 23%;"> <span class="input-group-addon"> <span class="glyphicon glyphicon-user"> </span> </span> <input onblur="checkUsername()" type="email" id="username" class="form-control" placeholder="请输入电子邮箱" aria-describedby="sizing-addon2" required minlength="6"> </div> <div class="input-group" style="margin-left: 23%;margin-right: 23%;margin-top: 1%;"> <span class="input-group-addon"> <span class="glyphicon glyphicon-lock"> </span> </span> <input onblur="checkPassword()" type="password" id="password" class="form-control" placeholder="请输入密码" aria-describedby="sizing-addon2" required minlength="6"> </div> <div class="text-danger" id="error-message"> </div> <!-- 显示验证失败的错误信息 --> <b style="margin-left: 25%;">忘记密码?</b> <button type="submit" class="btn btn-primary" style="margin-top: 1%;margin-left:65%">登录</button> <!-- 登录按钮 --> </div> </form>请编写script代码,为上述表单的密码输入框添加验证功能,要求编写正则表达式,密码至少 8 个字符,必须只包含字母(含大小写)、数字和特殊字符(键盘上所有特殊 字符),并使用 zxcvbn 计算密码强度

时间: 2023-07-03 19:33:53 浏览: 56
以下是一个实现密码输入框验证的 JavaScript 代码示例: ``` // 获取密码输入框元素 const passwordInput = document.getElementById('password'); // 定义密码验证的正则表达式 const passwordRegex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+,\-.\/:;<=>?@\[\\\]^_`{|}~]).{8,}$/; // 定义密码强度计算器 const passwordStrengthMeter = new window.zxcvbn(passwordInput.value || ''); // 给密码输入框添加 onblur 事件监听器 passwordInput.addEventListener('blur', () => { // 获取密码输入框的值 const password = passwordInput.value; // 如果密码符合正则表达式,表示密码格式正确 if (passwordRegex.test(password)) { // 计算密码强度得分 const passwordStrengthScore = passwordStrengthMeter.score; // 根据密码强度得分设置密码强度提示信息 let passwordStrengthMessage; if (passwordStrengthScore === 0) { passwordStrengthMessage = '非常弱'; } else if (passwordStrengthScore === 1) { passwordStrengthMessage = '弱'; } else if (passwordStrengthScore === 2) { passwordStrengthMessage = '一般'; } else if (passwordStrengthScore === 3) { passwordStrengthMessage = '强'; } else { passwordStrengthMessage = '非常强'; } // 显示密码强度提示信息 document.getElementById('error-message').textContent = `密码强度:${passwordStrengthMessage}`; } else { // 如果密码不符合正则表达式,表示密码格式不正确 document.getElementById('error-message').textContent = '密码必须至少包含8个字符,包括字母、数字和特殊字符!'; } }); ``` 这段代码会对密码输入框进行验证,当密码输入框失去焦点时,会根据正则表达式判断密码格式是否正确,如果正确则使用 zxcvbn 库计算密码强度,并在错误信息区域显示密码强度提示信息;如果不正确则在错误信息区域显示密码格式错误的提示信息。

最新推荐

市建设规划局gis基础地理信息系统可行性研究报告.doc

市建设规划局gis基础地理信息系统可行性研究报告.doc

"REGISTOR:SSD内部非结构化数据处理平台"

REGISTOR:SSD存储裴舒怡,杨静,杨青,罗德岛大学,深圳市大普微电子有限公司。公司本文介绍了一个用于在存储器内部进行规则表达的平台REGISTOR。Registor的主要思想是在存储大型数据集的存储中加速正则表达式(regex)搜索,消除I/O瓶颈问题。在闪存SSD内部设计并增强了一个用于regex搜索的特殊硬件引擎,该引擎在从NAND闪存到主机的数据传输期间动态处理数据为了使regex搜索的速度与现代SSD的内部总线速度相匹配,在Registor硬件中设计了一种深度流水线结构,该结构由文件语义提取器、匹配候选查找器、regex匹配单元(REMU)和结果组织器组成。此外,流水线的每个阶段使得可能使用最大等位性。为了使Registor易于被高级应用程序使用,我们在Linux中开发了一组API和库,允许Registor通过有效地将单独的数据块重组为文件来处理SSD中的文件Registor的工作原

要将Preference控件设置为不可用并变灰java完整代码

以下是将Preference控件设置为不可用并变灰的Java完整代码示例: ```java Preference preference = findPreference("preference_key"); // 获取Preference对象 preference.setEnabled(false); // 设置为不可用 preference.setSelectable(false); // 设置为不可选 preference.setSummary("已禁用"); // 设置摘要信息,提示用户该选项已被禁用 preference.setIcon(R.drawable.disabled_ico

基于改进蚁群算法的离散制造车间物料配送路径优化.pptx

基于改进蚁群算法的离散制造车间物料配送路径优化.pptx

海量3D模型的自适应传输

为了获得的目的图卢兹大学博士学位发布人:图卢兹国立理工学院(图卢兹INP)学科或专业:计算机与电信提交人和支持人:M. 托马斯·福吉奥尼2019年11月29日星期五标题:海量3D模型的自适应传输博士学校:图卢兹数学、计算机科学、电信(MITT)研究单位:图卢兹计算机科学研究所(IRIT)论文主任:M. 文森特·查维拉特M.阿克塞尔·卡里尔报告员:M. GWendal Simon,大西洋IMTSIDONIE CHRISTOPHE女士,国家地理研究所评审团成员:M. MAARTEN WIJNANTS,哈塞尔大学,校长M. AXEL CARLIER,图卢兹INP,成员M. GILLES GESQUIERE,里昂第二大学,成员Géraldine Morin女士,图卢兹INP,成员M. VINCENT CHARVILLAT,图卢兹INP,成员M. Wei Tsang Ooi,新加坡国立大学,研究员基于HTTP的动态自适应3D流媒体2019年11月29日星期五,图卢兹INP授予图卢兹大学博士学位,由ThomasForgione发表并答辩Gilles Gesquière�

PostgreSQL 中图层相交的端点数

在 PostgreSQL 中,可以使用 PostGIS 扩展来进行空间数据处理。如果要计算两个图层相交的端点数,可以使用 ST_Intersection 函数来计算交集,然后使用 ST_NumPoints 函数来计算交集中的点数。 以下是一个示例查询,演示如何计算两个图层相交的端点数: ``` SELECT ST_NumPoints(ST_Intersection(layer1.geometry, layer2.geometry)) AS intersection_points FROM layer1, layer2 WHERE ST_Intersects(layer1.geometry,

漕河渡槽Ⅳ标段_工程施工土建监理资料建筑监理工作规划方案报告.doc

漕河渡槽Ⅳ标段_工程施工土建监理资料建筑监理工作规划方案报告.doc

HAL多学科开放获取档案库的作用及代理重加密和认证委托的研究

0HAL编号:tel-038172580https://theses.hal.science/tel-038172580提交日期:2022年10月17日0HAL是一个多学科开放获取档案库,用于存储和传播科学研究文档,无论其是否发表。这些文档可以来自法国或国外的教育和研究机构,也可以来自公共或私人研究中心。0HAL多学科开放获取档案库旨在存储和传播法国或国外的教育和研究机构、公共或私人实验室发表或未发表的研究文档。0代理重加密和认证委托的贡献0Anass Sbai0引用此版本:0Anass Sbai. 代理重加密和认证委托的贡献. 离散数学[cs.DM]. 皮卡第朱尔大学, 2021. 法语. �NNT:2021AMIE0032�. �tel-03817258�0博士学位论文0专业“计算机科学”0提交给科技与健康学院博士学位学校0皮卡第朱尔大学0由0Anass SBAI0获得皮卡第朱尔大学博士学位0代理重加密和认证委托的贡献0于2021年7月5日,在评审人的意见后,面向考试委员会进行

编写一个函数,将double数组转换成一个三列显示的二维数组(用grouped方法实现传入列数作为参数)

以下是一个基于Python实现的函数,可将长度为n的double数组转换为k列的二维数组,其中k为传入的列数。如果n不是k的倍数,则最后一行的元素数可能少于k列。 ```python import math def convert_to_2d(arr, k): n = len(arr) rows = math.ceil(n / k) result = [[0] * k for _ in range(rows)] for i in range(n): row = i // k col = i % k result

紫黑暗夜星空商务创业计划书29.pptx

紫黑暗夜星空商务创业计划书29.pptx