扫码关注官方订阅号
正则表达式 6~22位,必须由字母和数字组成。表示式如下:/^(?![a-zA-Z]+$)(?!\d+$)[a-zA-Z0-9]{6,22}$/
/^(?![a-zA-Z]+$)(?!\d+$)[a-zA-Z0-9]{6,22}$/
自己理解的思路:预先去除全是字母组成的字符串,再去去除全是数字的字符串,再去判断最后的6~22位的字母或数字组成,不知道是不是这样理解。
请大神解惑,小弟感激不尽!
业精于勤,荒于嬉;行成于思,毁于随。
看图
/^(?![a-zA-Z]+$)/ 不能为纯字母/^(?!\d+$)/不能纯数字/^[a-zA-Z0-9]{6,22}$/匹配6-22位字母或数字
可以这样子来理解
这个正则表达式分成三部分,
/^[a-zA-Z0-9]{6,22}$/ 字母和数字,且 6-22 位 /^(?![a-zA-Z]+$)/ 排除纯字母 /^(?!\d+$)/ 排除纯数字
具体执行的先后顺序我也不是很清楚。其实这个正则表达式的疑惑,主要来源于 (?!),这个并不会改变正则表达式的索引 lastIndex,后面的主体部分在匹配的时候,还是会从第一个字符来判断。
(?!)
lastIndex
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
看图

/^(?![a-zA-Z]+$)/ 不能为纯字母
/^(?!\d+$)/不能纯数字
/^[a-zA-Z0-9]{6,22}$/匹配6-22位字母或数字
可以这样子来理解
这个正则表达式分成三部分,
具体执行的先后顺序我也不是很清楚。其实这个正则表达式的疑惑,主要来源于
(?!),这个并不会改变正则表达式的索引lastIndex,后面的主体部分在匹配的时候,还是会从第一个字符来判断。