Java中的正则表达式

在生活中,有许多信息需要验证!

电话号码

身份证

邮箱

……

这就需要我们编程实现对字符串的验证。

正则表达式可以轻松地完整这个工作。

掌握三点就就可以轻松写出正则表达式了。

元字符

正则表达式其实是一种格式,字符串符合这种格式,就验证成功,不符合就不成功。

格式需要具有特殊意义的字符,这些特殊意义的字符成为正则表达式中的元字符。

元字符如下:

.    匹配除换行符以外的任意字符

\w   匹配字母或数字或下划线或汉字

\s    匹配任意的空白符

\d    匹配数字

\b    匹配单词的开始或结束

常用反义元字符

代码   说明

\W 匹配任意不是字母,数字,下划线,汉字的字符

\S 匹配任意不是空白符的字符

\D 匹配任意非数字的字符

说明1:以上元字符在正则表达中写法要多加一个\,比如\w要写成\\w

说明2:因为˖是表示任意字符,如果要匹配˖本身,需要用\\˖表示。

元字符还有另外一种形式

在正则表达式中可以用方括号括起若干字符来表示一个元字符。

[abc]:代表abc中的任何一个

[^abc]:代表abc以外的任何字符

[a-zA-Z]:代表英文字母中的任何一个

另外,中括号里允许嵌套中括号,可以进行并交差运算,例如:

[a-d[m-p]]:代表a-d,或m-p中的任何字符(并);

[a-z&&[def]]:代表def中的任何一个字符(交);

如果这两种形式的元字符没有加任何限定出现次数的修饰符,表示元字符描述的范围中某一字符必须且最多出现一次。

比如:[abc]与字符串a或字符串b或字符串c匹配都为真,与字符串ab匹配则为假,与空字符串匹配也为假。

限定修饰符

我们来看看限定出现次数的修饰符。

如下所示:

*        重复零次或更多次

+        重复一次或更多次

?        重复零次或一次

重复n次

重复n次或更多次

重复n到m次

举例:

[abc]+:表示a,b,c中任意字符出现1次或多次,可以和a,ab,abc,b,bc等匹配,不能和空字符串以及含有a,b,c三个字符以外的字符串匹配。

定字符

固定字符就是要匹配的字符串中必须出现的。

比如:Stringregex=”[159]+ABC”;

其中[159]是元字符,因为用方括号括起来,这里表示1,5,9中任意一个字符出现一次或多次。后面的ABC就是固定字符,表示必须原班人马出现在要匹配的字符串中。

95ABC可以和这个正则表达式匹配。

11ABC也可以匹配

51AB就不能匹配

65ABC也不能匹配

如果固定字符有多种情况,比如电信手机号码都必须以为153,155开头,后面是8个数字。

正则表达式可以写为:(153|155)[0-9]

在153和155之间用|表示或者,注意它们是用小括号括起来的。

有了以上知识,你能写出判断邮箱格式是否正确的正则表达式吗?

正则表达式的使用

1、String类的public boolean match(String regex)方法

例:从键盘读入字符串,判断它是否由数字、字母、下划线组成。

分析:从键盘读入数据,用Scanner,读取字符串使用nextLine()方法。判断字符串使用match函数与正则表达式比较。

练习:

判断从键盘上读入的字符串是否符合邮箱格式,如果符合输出“合法”,否则输出“不合法”。

2、String类的public String[ ] split(String regex)方法

例:从字符串"鸡蛋:5.0元/斤,黄瓜:3.5元/斤,西红柿:2.8元/斤"中筛选出数字和小数点,输出相关内容。

分析:利用split方法对字符串进行切分,切分的依据是非数字和小数点的字符,需要用正则表达式完成,切分之后会返回一个字符串数组。

注意:本例中字符串前面是“鸡蛋:”,split在切分时会将“鸡蛋:”前面的内容切分为字符串数组的第一个元素,这个元素的内容是“”,即空字符串。

练习:

从键盘上读入字符串将其中带小数点的数字取出,转换为double类型,输出它们的和。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181109G00R4D00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券