要求输入框里面必须同时含有字母,数字,特殊字符,且不小于8位
一、前言
我们在做输入框的时候,总是要用正则来限制用户输入的一些条件的,这里的要求是输入框中必须同时含有大小写字母,数组,特殊字符等,行吧,咱们一起研究下。
二、思路
百度出来一个很好的思路:
分析一下,总结需求如下: 1.必须包含字母,即字符当中字母的个数>=1; 2.必须包含数学,即字符当中的数字个数>=1; 3.必须包含特殊字符,即字符当中的特殊字符个数>=1; 理论上的需求就是这个样子,不过 因为我们思考的都是利用正向思维,然而正则表达式引擎在这一方面支持性不是很好. 所以我们得改一种思考方式,试一下反向思考: 得出我们新的需求: 1.不能全是数字和特殊字符. 2.不能全是字符和特殊字符. 3.不能全是数字加字母.
按照这个思路,最终结果是:
'pattern' => '/^(?![^a-zA-Z]+$)(?!\D+$)(?![a-zA-Z0-9]+$).{8,}$/'
经验证无误,可以使用。
参考链接:https://brucezheng.iteye.com/blog/419104
end
====================== 2019/3/18===============================
看到评论里面有人要求解释一下,刚好闲来无事,我自己也研究一下,在此解释一下:
1、括号的含义
()表示捕获分组,()会把每个分组里的匹配的值保存起来,使用$n(n是一个数字,表示第n个捕获组的内容)
2、第一个括号中的:?![^a-zA-Z]+$
?! 解释:
(?!exp)
为零宽断言,表示断言之后的内容不能是exp,[^a-zA-Z]
表示非英文字母,+表示可以有多个,$匹配结尾.
也就是可以理解为非的意思。也就是说不能全是非英文字母,非英文字母代表的是数组和特殊字符,
所以这个就是咱们分析的第一条,不能全是数字和特殊字符。
3、 第二个括号中的:?!\D+$
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
这句的意思是不能全部是非数字,必须含有数字,也就是咱们分析的第二条,不能全是字符和特殊字符
4、 第三个括号中的:?![a-zA-Z0-9]+$
这句的意思是不能全是大小写字母和数字,就是咱们分析的第三条,不能全是数字加字母
5、 最后的:.{8,}
.点号匹配任意单个字符,这里主要是配合后面的限制位数使用
这句代表匹配的整个字符串要大于8个,没有上限,这就是咱们需求中的不小于8位。如果要加上限,可以是:.{8,10}
,代表匹配的字符串是8-10个。
其实这些正则的解释,网上都能百度的到,关键就是这种逆向思维很值得学习。单独的正则也比较好理解一些,连到一起反而起到了不可思议的结果。关于正则,我们都在路上!加油
要求输入框里面必须同时含有字母,数字,特殊字符,且不小于8位相关推荐
- validate验证长度 vue_vue input 输入校验字母数字组合且长度小于30的实现代码
下面一段代码给大家分享vue input 校验字母数字组合且长度小于30,具体代码如下所示: validateJyh(glhm){//校验关联交易号 var reg = /^[A-Za-z0-9]{1 ...
- vue验证整数_vue input 输入校验字母数字组合且长度小于30的实现代码
下面一段代码给大家分享vue input 校验字母数字组合且长度小于30,具体代码如下所示: validateJyh(glhm){//校验关联交易号 var reg = /^[A-Za-z0-9]{1 ...
- 账号由大小写字母+数字+特殊字符组成 正则表达
1.账号由大小写字母+数字+特殊字符组成 正则表达 ^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*\\W)[a-zA-Z\\d\\W]{8,}$
- 设置密码8-16位大写字母+小写字母+数字+特殊字符
我的这个效果是结合element UI的样式显示的,大家主要看函数里边对应的实现方法 主要的js代码: var validatePass = (rule, value, callback) => ...
- java 限制录入特殊字符_要求输入框里面必须同时含有字母,数字,特殊字符,且不小于8位...
一.前言 我们在做输入框的时候,总是要用正则来限制用户输入的一些条件的,这里的要求是输入框中必须同时含有大小写字母,数组,特殊字符等,行吧,咱们一起研究下. 二.思路 百度出来一个很好的思路: 分析一 ...
- 正则表达式 密码 需包含字母数字特殊字符
要求 密码必须包含字母.数字和特殊字符,且长度要在8位以上 方案 var reg = /(?=.*[a-z_])(?=.*\d)(?=.*[^a-z0-9_])[\S]{8,}/i; 具体解释 (?= ...
- 密码正则表达式,密码长度大于6并且同时包含字母数字特殊字符
package com.desigin.listening;import java.util.regex.Matcher; import java.util.regex.Pattern;public ...
- 字母数字特殊字符部分unicode对照表
Bin(二进制) Oct(八进制) Dec(十进制) Hex(十六进制) 缩写/字符 解释 0000 0000 0 0 00 NUL(null) 空字符 0000 0001 1 1 01 SOH ...
- python正则匹配数字_Python正则表达式,用于字母数字
我正在学习正则表达式,并尝试执行以下操作: 以下是一系列字母数字的格式.它以4位数字开头,后跟2个空格,然后是8位数字,然后是一个空格,然后是8位数字,然后是一个空格,然后是8位数字,然后是一个空格, ...
最新文章
- 真正从零开始了解 Julia
- Release Type
- mui app webview 沉浸式导航_AR实景导航 轻松找到网约车!高崎机场推出网约车专属上车区等便民举措...
- 2019.3.2 区块链论文翻译
- 怎样用shell计算linux内存,计算Linux内存,CUP,硬盘使用率的shell脚本
- 纯CSS实现table表头固定(自创备忘)
- 随想录(简单的windows驱动代码)
- hana数据库 字段长度_SAP HANA: 列式内存数据库评测
- 均值滤波器、中值滤波器、滤波器的常见应用。
- 单片机上面的继电器工作原理及其作用
- mirth connect 去空格
- 常用组态软件DDE配置
- 二维傅里叶变换的意义
- ADByby 自定义过滤语法简表
- 学习日记day35 平面设计 作品练习字体设计
- vue中浏览器全屏和退出全屏
- 计算机运行内存和显卡内存不足,系统提示显卡内存不足怎么办?-解决系统提示显卡内存不足的方法 - 河东软件园...
- 高维统计理论 Gauss与Rademacher复杂度
- java毕业设计校园社区系统mybatis+源码+调试部署+系统+数据库+lw
- Odoo16正式版于2022年9月12日发布
热门文章
- php怎么输出3个函数和,PHP利用var_dump,var_export,print_r三个函数的区别示例
- linux图形化卡在开机界面,linux怎么在开机时进入图形界面
- 【alibaba-cloud】SpringCloud和SpringCloud对比
- 多目标跟踪2021总结
- It is a distutils installed project and thus we cannot accurately
- LFFD ncnn torch
- apply_async多进程
- 'BatchNorm2d' object has no attribute 'track_running_stats'
- 树莓派3b与散热风扇
- 视频稳像(Video Stabilization)