正则表达式:必须包含数字,小写,大写,符号

直接进入主题

正则表达式:(?![a-zA-Z.]+$)(?![0-9A-Z.]+$)(?![0-9a-z.]+$)(?![0-9a-zA-Z]+$)[0-9a-zA-Z.]{6,8}

我感觉我写的挺啰嗦的,但是实在是不知道怎么优化,希望大佬们能给出简洁的表达式,真的十分感谢

这里可以拆分为 5 截

 1. (?![a-zA-Z.]+$) :排除小写,大写,符号,剩余 数字
 2. (?![0-9A-Z.]+$):排除数字,大写,符号,剩余 小写
 3. (?![0-9a-z.]+$):排除数字,小写,符号,剩余 大写
 4. (?![0-9a-zA-Z]+$):排除小写,大写,数字,剩余 符号
 5. [0-9a-zA-Z.]{6,8}:输入的字符串,可以包含 数字,小写,大写,符号,且6位长度 至 八位长度

这里主要讲解最重要的元字符

 1. (?!pattern):这个元字符的意思,就是排除掉pattern,剩下的那个就是你要的字符,我是这样理解的,当然如果你有更好的见解,可以共享出来
    
    例子:Pukun88.  这是我要输入的一串字符,然后我要获取最后一位点,那么就可以这样子写,
    (?![0-9][a-z][A-Z]),这个意思就是,不等于数字,不等于小写,不等于大写,那么剩下的就是最后一位点了

    官方解释:
    
    正向否定预查(negative assert),在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如"Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

(?=pattern):这个元字符,我不知道它到底应该怎么用,希望好心肠的大佬,能够留言告知一下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值