jquery里用正则来验证密码,必须包含大小写字母,数字及特殊符号,或最少包含两种

本文主要是介绍jquery里用正则来验证密码,必须包含大小写字母,数字及特殊符号,或最少包含两种,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

宣传下我自己做的小程序码,可以在上面领饿了么和美团红包的小程序。


 

我们在web开发中,经常会用到正则来验证用户所输入和提交的内容,所以站长也会经常收集和整理一些好用的正则表达式,记录和整理本来就是学习过程中的一部分,今天在网上看到有人在询问一个正则,就自己写了一下,拿出来与大家分享。

一:要求用正则来验证用户输入的密码,至少包含大小字字母,数字和特殊符号中两种,简单的说,就是验证用户输入的密码不能太简单。

乍一想,这种正则好像不太方便下手写,至少以前站长在验证用户输入的密码格式时,都是分步来写的,比如:

if(/[a-z]/g.test(v)){alert("不能纯为小写字母");return false;
}else if(/[A-Z]/g.test(v)){alert("不能纯为大写字母");return false;
}else if(/[0-9]/g.test(v)){alert("不能纯为数字");return false;
}else if(/[^0-9a-zA-Z]/g.test(v)){alert("不能纯为非字母和数字的特殊符号");return false;
}

现在技术比以前好了那么“一丢丢”,就在想,能不能用一句正则来实现呢?当然是可以的,下面是具体的正则: 

var v=$("#text").val();
reg=/^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{6,}$/;
alert(reg.test(v));

上面的正则表达的意思是,不能为纯数字,不能为纯小写字母,不能为纯大写字母,不能为纯特殊符号,至少六位。

不要看着有点复杂,其实很简单的,站长来给大家拆开分析一下:

(?!) 这是正则里的一个“语法结构”,表示“规定后面不是”的意思,看这篇《jquery正则中问号的三种[说四种那是忽悠人]用法详解及在线实例演示》

了解了上面这一句,那么上面的正则就好理解了:

(?![0-9]+$)  表示后面不能为纯数字

(?![a-z]+$)  表示后面不能为纯小写字母

(?![A-Z]+$)  表示后面不能为纯大写字母
(?!([^(0-9a-zA-Z)])+$) 表示后面不能为除数字和字母外的纯特殊符号
^ 这个符号单独用表示“开头”,用在中括号的开头,表示“非”;

.{6,}  表示至少6位的任意字符

$ 表示“结尾” 

二:另外还有一种情况,那就是,有时我们需要我们的密码必须为“字母+数字+特殊符号”,那么我们要如何写呢?

(?![0-9a-z]+$) 不能为小写字母与数字
(?![0-9A-Z]+$) 不能为大写字母与数字
(?![0-9\W]+$)  不能为数字及特殊符号
(?![a-z\W]+$)  不能为小写字母及特殊符号
(?![A-Z\W]+$)  不能为大写字母及特殊符号
(?![0-9a-zA-Z]+$) 不能为大写,小写字母与数字

把这三种情况也加上去后,就只剩下“必须包含数字、大小写字母和特殊符号”这一种情况了,但是我们也得出了一个超长的正则,这里就不写了!

那么有没有简单的方法呢?当然是有的:

var v=$("#text").val();
reg=/^(?=.*[a-zA-Z])(?=.*[1-9])(?=.*[\W]).{6,}$/;
alert(reg.test(v));

(?=)这个语法结构在正则里表示“设定后面是”的意思。

(?=.*[a-zA-Z])  这句的意思就是后面必须有一位大写或小写字母

(?=.*[1-9]) 这句的意思是后面必须有一位数字

(?=.*[\W]) 这句的意思是后面必须有一个非字母数字及下划线的特殊符号

上述正则校验在实际使用中会遇到很多全角符号导致验证失败的问题,所以最后我们在项目中改成了限定特殊符号的范围。因为我们想着密码的特殊符号是为了防破解,所以一些常用的特殊符号就足够我们使用了,我们最后限定的特殊符号范围是 !@#$%^&*   这些。于是正则表达些的写法如下

var v=$("#text").val();
reg=/^(?=.*[a-zA-Z])(?=.*[1-9])(?=.*[!|@|#|$|%|^|&|*]).{6,}$/;
alert(reg.test(v));

上述结构中最后的 (?=.*[!|@|#|$|%|^|&|*]) 表示必须有一个!@#$%^&*中的一个,竖线在正则中表示多个中选一个。这样限定了范围,可以避免了很多其他全角、html预定字符等转义导致的一些列问题。

这篇关于jquery里用正则来验证密码,必须包含大小写字母,数字及特殊符号,或最少包含两种的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025530

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

基于Python实现数字限制在指定范围内的五种方式

《基于Python实现数字限制在指定范围内的五种方式》在编程中,数字范围限制是常见需求,无论是游戏开发中的角色属性值、金融计算中的利率调整,还是传感器数据处理中的异常值过滤,都需要将数字控制在合理范围... 目录引言一、基础条件判断法二、数学运算巧解法三、装饰器模式法四、自定义类封装法五、NumPy数组处理

MyBatis流式查询两种实现方式

《MyBatis流式查询两种实现方式》本文详解MyBatis流式查询,通过ResultHandler和Cursor实现边读边处理,避免内存溢出,ResultHandler逐条回调,Cursor支持迭代... 目录MyBATis 流式查询详解:ResultHandler 与 Cursor1. 什么是流式查询?