java正则表达式最简单 学习教程

本大教程以一个验证手机号的表达式为例,学完本例后,基本上所有的表达式都能看懂了,但是如果想要达到上手就能写的程度,还需要多练习多测试 呀!

来看 这样一个代码

String mobilePhoneReg = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
if (!mobilephone.matches(mobilePhoneReg)) {
showToast("手机号码格式不正确!");
return false;
}

1、字符串“13”

单从最开始的13来看,如果正则表达式的字符串是“13”,意味着匹配“13”这个字符串,如果不是“13”肯定就是matches的结果为false.

2、英文句号“.”

“.”的含义,其实可以理解为一个占位符,“1.3”表示匹配三位数,开头和结尾必须是1和3,例如“143”,“1..3”标识匹配四位数,例如“143”现在匹配的话就匹配不上了。

3、方括号“[]”

“[]”可以看作是“.”的延伸,都是一个占位符,区别只在于"[]"对元素进行了进一步的限定,例如“1[fb4]3”表示只匹配“143”、“1f3”、“1b3”这三个,如果是别的,统统就不接受了。

4、圆括号“()”

“()”相比“[]”又有所扩大,"[]"只是一个占位符,“()”则可以表示多个占位符,例如“1(abc)3”表示只匹配“1abc3”,当然你还可以用“|”来支持群组匹配的效果,例如“1(abc|2)3”表示只匹配“1abc3”或者“123”。

5、“|”

在圆括号中时候实际上已经提到了,“|”的作用就如同他在代码中的含义:或者。

6、“-”

“-”在正则表达式中可能出现在两种场景,一个单独出现“-”,一个是“\-”,两种场合的意义当然也是不同的,前者表示区间概念,比如“1[1-3]3”,表示匹配“113”、“123”、“133”,出现在括号外部当然意图就是一个纯粹的符号-,这时候要用到转义字符“\”,例如“1[\-]3”表示只匹配字符“1-3”

7、表示匹配次数系列

值得注意的是,表示匹配次数系列的符号都是针对他们的上一个字符起效的,比如“13*”表示匹配“1....”,“13+”表示匹配“13....”,“13?”表示匹配“1”或“13”,“13{2}”表示匹配“133”,“13{2,3}”表示匹配“133”或者“1333”.

8、灭绝师太“^”

“^”表示否定含义的时候,必须用于括号内,它在谁前面,就表示不允许谁出现了。例如“[^1]3”表示匹配除了1开头以外第二位是3的。但是灭绝师太也有柔情的一面,当她在正则表达式的开头时,领着一堆恒山女弟子,为我独尊,只匹配为首字母是下一个字符的,例如“^1”只匹配“1111”中的第一个1。

9、美元符号“$”

“$”用于句末,表示只结尾是某个字符(表达式)的,例如“2$”只会匹配“2222”的最后一个2。

9、“/s”

“/s”表示一个空格,例如“/s+”表示匹配至少一个空格,不过在java中需要使用双斜杠来表示空格:“//s+”

10、快捷符号

顾名思义就是快捷键,就是在某种情况下,我们可以使用一种更简单的表达式达到同样的效果。

注:java中通通要使用双斜杠来表示。

11、","逗你玩

    其实","不仅仅用于{},还经常可以出现在方括号里边[1,2],这种情况下其实与“|”的含义是一样的,都表示或者的意思,例如[1,3]表示匹配“1”和“3”.

好了,如果你以上11点都掌握了,那让我们来看看上述验证电话号码的含义吧~

即:前三位数是“13”+0-9的任意一位或者“15 ”+除了4 的0-9的任意一位,或者“18”+0或者5-9;后八位是数字的电话号码。

 

posted @ 2015-09-02 19:38  钢面公爵  阅读(1334)  评论(2编辑  收藏  举报