关于java对特殊字符处理的一些理解和总结(密码校验和手机号校验)

介绍

这段时间使用Java的正则表达式做一些字符串匹配的任务,现将学到的正则表达式的知识整理成文。
Java中Spring.class涉及到正则表达式。如Spring.split(), matches(),replaceAll()等方法。
Java中一般使用正则表达式的方式是利用Pattern.class和Matcher.class,所在package为java.util.regex。

该篇主要针对字符进行总结,如下是构造正则表达式的常用字符

字符类描述
\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n"匹配字符"n”。"\n"匹配换行符。序列"\“匹配”","(“匹配”("。
^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与"\n"或"\r"之后的位置匹配。
. (小数点)任意字符
[abc][ ] 中括号,包含a,b,c中任意字符
[^abc][ ]中括号加^, 表示否定,除a,b,c之外的
[a-z]从a到z的任意字符
[a-z&&[hi]]&&表示交集,即包含h或i
\s空白字符,包含空格,换行,回车,tab,换页
\S大写为小写的取反,非空白字符,等价于[^\s]
\d数字0-9
\D非数字,等价于[^0-9]
\w词字符,数字,大小写字母,等价于[0-9a-zA-Z]
\W非词,等价于[^\w]

密码剖析

如一般是对密码和手机号进行校验,现在根据密码常用的校验方法来说明:
1.密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。
(?=.*\\d)指数字0-9,(?=.*[a-z])指英文小写,(?=.*[A-Z])指英文大写,.{8,10}指长度在8-10之间

String regex = "^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$";

自定义密码规则

1.自定义密码规则,8-25位必须且仅含数字、字母大小写、特殊字符三种或以上:
长度在8-25位.{8,25},数字(?=.*\\d),字母大小写(?=.*[a-z])(?=.*[A-Z]),特殊字符(?=.*\\W),以上就是这次规则的组成部门
这里又四种密码规则,但只要满足其中三种就行,所以要把可以满足要求的规则列出来。
1.数字和英文大小写:(?=.*\d)(?=.*[a-z])(?=.*[A-Z])
2.数字特殊字符和英文大写或小写:(?=.*\d)(?=.*\\W)(?=.*[a-zA-Z]
3.特殊字符和英文大小写:(?=.*\\W)(?=.*[a-z])(?=.*[A-Z])
4.将上列满足要求的规则并起来为:
((?=.*\d)(?=.*[a-z])(?=.*[A-Z]))|((?=.*\d)(?=.*\\W)(?=.*[a-zA-Z]))|(?=.*\\W)(?=.*[a-z])(?=.*[A-Z])
所以我们这次的自定义密码规则为:

String regex = "^(((?=.*\d)(?=.*[a-z])(?=.*[A-Z]))|((?=.*\d)(?=.*\\W)(?=.*[a-zA-Z]))|((?=.*\\W)(?=.*[a-z])(?=.*[A-Z]))).{8,25}$";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值