java正则表达式

在生活中,我们会经常会遇到要求你把密码设置为带有数字、英文或下划线等来增强密码的安全,还有验证输入的验证码是否正确,如何编写这种类型的代码?正则表达式就是一个不错的选择,简单而有效。

Java正则表达式

正则表达式(regular expression,简写为regex)是一个字符串,用来描述匹配一个符串集合的模式。可以使用正则表达式来匹配、替换和分割字符串。

1.匹配字符串

String类的matches方法不仅可以匹配固定字符串,还可以匹配一个模式的字符串集。

例1,下面语句的结果都为true:

System.out.println("Java".matches("Java.*"));
System.out.println("Java is cool".matches("Java.*"));
System.out.println("Java is fun".matches("Java.*"));

在前面的语句中的"Java. * "是一个正则表达式。它描述的字符串模式是以字符串Java开始的,后面紧跟任意0个或多个字符。这里,字串. * 与0个或多个字符相匹配。

例2,下面语句的结果为true:

System.out.println("400-02-4534".matches("\\d{3}-\\d{2}-\\d{4}"));

这里 \\d 表示单个数字位,\\d{3}表示三个数字位。

2.替换字符串

正则表达式可以和replaceAll和replaceFirst方法结合在一起使用。

例1,下面语句的结果为aNNNbNNNNNNc:

String s="a+b&#c".replaceAll("[&+#]", "NNN");
System.out.println(s);

replaceAll方法替换所有匹配的子字符串。

例2,下面语句的结果为aNNNb&#c:

String s="a+b&#c".replaceFirst("[&+#]", "NNN");
System.out.println(s);

replaceFirst方法替换第一个匹配的子字符串。
这里的正则表达式[&+#]能够匹配&、+、#的模式。

3.分隔字符串

方法split可以和正则表达式结合在一起使用来实现分隔字符串。
例,下面语句实现了将字符串a+b#c分隔成a,b,c:

String[] s="a+b#c".split("[+&#]");
for(int i=0;i<s.length;++i)
		System.out.println(s[i]);

4.正则表达式语法

正则表达式匹配
x指定字符x
.任意单个字符
(ab | cd)ab或者cd
[abc]a、b或者c
[^abc]除开a、b或者c以外的任意字符
[a-z]a到z
[^a-z]除开a到z的任意字符
[a-e[m-p]]a到e或m到p
[a-e&&[c-p]]a到e与c到p的交集
\d个位数,等同于[0-9]
\D一位非数字
\w单词字符
\W非单词字符
\s空白字符
\S非空白字符
p*模式p的0或者多次出现
p+模式p的1或者多次出现
p?模式p的0或者1次出现
p{n}模式p的正好n次出现
p{n,}模式p的至少n次出现
p{n,m}模式p出现次数位于n和m间(不包含)

注意:
①单词字符可以是任何的字母、数字或者下划线字符。因此,\w等同于[a-z[A-Z][0-9]_]
②最后六个实体*、+、?、{n}、{n,},以及{n,m}成为量词符,用于确定量词符前面的模式会重复多少次。
③不要在重复量词符中使用空白
④可以使用括号来将模式进行分组

本文章参考《Java 语言程序设计( 基础篇 )》,仅供个人学习使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值