一、前言

我们在做输入框的时候,总是要用正则来限制用户输入的一些条件的,这里的要求是输入框中必须同时含有大小写字母,数组,特殊字符等,行吧,咱们一起研究下。

二、思路

百度出来一个很好的思路:

分析一下,总结需求如下: 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位相关推荐

  1. validate验证长度 vue_vue input 输入校验字母数字组合且长度小于30的实现代码

    下面一段代码给大家分享vue input 校验字母数字组合且长度小于30,具体代码如下所示: validateJyh(glhm){//校验关联交易号 var reg = /^[A-Za-z0-9]{1 ...

  2. vue验证整数_vue input 输入校验字母数字组合且长度小于30的实现代码

    下面一段代码给大家分享vue input 校验字母数字组合且长度小于30,具体代码如下所示: validateJyh(glhm){//校验关联交易号 var reg = /^[A-Za-z0-9]{1 ...

  3. 账号由大小写字母+数字+特殊字符组成 正则表达

    1.账号由大小写字母+数字+特殊字符组成 正则表达 ^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*\\W)[a-zA-Z\\d\\W]{8,}$

  4. 设置密码8-16位大写字母+小写字母+数字+特殊字符

    我的这个效果是结合element UI的样式显示的,大家主要看函数里边对应的实现方法 主要的js代码: var validatePass = (rule, value, callback) => ...

  5. java 限制录入特殊字符_要求输入框里面必须同时含有字母,数字,特殊字符,且不小于8位...

    一.前言 我们在做输入框的时候,总是要用正则来限制用户输入的一些条件的,这里的要求是输入框中必须同时含有大小写字母,数组,特殊字符等,行吧,咱们一起研究下. 二.思路 百度出来一个很好的思路: 分析一 ...

  6. 正则表达式 密码 需包含字母数字特殊字符

    要求 密码必须包含字母.数字和特殊字符,且长度要在8位以上 方案 var reg = /(?=.*[a-z_])(?=.*\d)(?=.*[^a-z0-9_])[\S]{8,}/i; 具体解释 (?= ...

  7. 密码正则表达式,密码长度大于6并且同时包含字母数字特殊字符

    package com.desigin.listening;import java.util.regex.Matcher; import java.util.regex.Pattern;public ...

  8. 字母数字特殊字符部分unicode对照表

     Bin(二进制) Oct(八进制) Dec(十进制) Hex(十六进制) 缩写/字符 解释 0000 0000 0 0 00 NUL(null) 空字符 0000 0001 1 1 01 SOH ...

  9. python正则匹配数字_Python正则表达式,用于字母数字

    我正在学习正则表达式,并尝试执行以下操作: 以下是一系列字母数字的格式.它以4位数字开头,后跟2个空格,然后是8位数字,然后是一个空格,然后是8位数字,然后是一个空格,然后是8位数字,然后是一个空格, ...

最新文章

  1. 真正从零开始了解 Julia
  2. Release Type
  3. mui app webview 沉浸式导航_AR实景导航 轻松找到网约车!高崎机场推出网约车专属上车区等便民举措...
  4. 2019.3.2 区块链论文翻译
  5. 怎样用shell计算linux内存,计算Linux内存,CUP,硬盘使用率的shell脚本
  6. 纯CSS实现table表头固定(自创备忘)
  7. 随想录(简单的windows驱动代码)
  8. hana数据库 字段长度_SAP HANA: 列式内存数据库评测
  9. 均值滤波器、中值滤波器、滤波器的常见应用。
  10. 单片机上面的继电器工作原理及其作用
  11. mirth connect 去空格
  12. 常用组态软件DDE配置
  13. 二维傅里叶变换的意义
  14. ADByby 自定义过滤语法简表
  15. 学习日记day35 平面设计 作品练习字体设计
  16. vue中浏览器全屏和退出全屏
  17. 计算机运行内存和显卡内存不足,系统提示显卡内存不足怎么办?-解决系统提示显卡内存不足的方法 - 河东软件园...
  18. 高维统计理论 Gauss与Rademacher复杂度
  19. java毕业设计校园社区系统mybatis+源码+调试部署+系统+数据库+lw
  20. Odoo16正式版于2022年9月12日发布

热门文章

  1. php怎么输出3个函数和,PHP利用var_dump,var_export,print_r三个函数的区别示例
  2. linux图形化卡在开机界面,linux怎么在开机时进入图形界面
  3. 【alibaba-cloud】SpringCloud和SpringCloud对比
  4. 多目标跟踪2021总结
  5. It is a distutils installed project and thus we cannot accurately
  6. LFFD ncnn torch
  7. apply_async多进程
  8. 'BatchNorm2d' object has no attribute 'track_running_stats'
  9. 树莓派3b与散热风扇
  10. 视频稳像(Video Stabilization)