JAVA里的正则表达式
07-09-07 23:59Update
我们很多时候需要处理像这样的需求:判断用户的输入是否为email地址,是否是英文或数字等等。怎么简单地去处理类似需求呢?
当然,我们可以使用常规的方法来解决这些问题。
但在很多情况下,我们可以用正则表达式来非常简单地完成这些任务。
什么是正则表达式呢?怎么使用正则表达式?
下面我们将来说明正则表达式并举例说明其用法。
正则表达式概述:
一个正则表达式可以由普通字符或元字符组合而成。元字符指具有特殊意义的字符。正则表达式入门:
| 表达式 | 说明 | 使用例 |
|---|---|---|
| ^ | 匹配一行的开头。 | 例:1,^hello。匹配行头以hello开头的字符串。 |
| $ | 匹配一行的结尾 | 例:1,hello$。匹配行尾以hello结尾的字符串。 |
| . | 匹配改行以外的任何字符 | 例:1,hello.world。匹配诸如hello world,hello-world等字符串。 |
| [] | 匹配被括起来的任何一个字符 | 例:1,[abc]。匹配a或者b或者c。 2,r[aeu]d。匹配rad或red或rud。 |
| [A-Z] | 匹配从A-Z的任一个字符。 | 例:1,a[A-Z]c。匹配aAc,aBc,…,aZc。 |
| [a-z] | 匹配从a-z的任一个字符。 | 例:1,a[a-z]c。匹配aac,abc,…,azc。 |
| [0-9] | 匹配从0-9的任一个数字。 | 例:1,a[0-9]c。匹配a0c,a1c,…,a9c。 |
| [^] | 匹配任何没有被括起来的一个字符。与[]相左。 | 例:1,[^abc]。则匹配除a或b或c以外的其他字符。 |
| * | 匹配*前面的一个字符任意次数(0到多次)。 | 例:1,ab*。则匹配a或ab或abb,abbb等 |
| + | 匹配+前面一个字符1到多次。 | 例:1,ab+。则匹配ab或abb或abbb,abbbb等 |
| ? | 匹配?前面一个字符0到1次。 | 例:1,ab?。则匹配a或ab。 |
| {n} | 匹配之前一个字符n次。n为整数。 | 例:1,ab{2}。则匹配abb。 |
| {n,} | 匹配之前一个字符n次或大于n次。n为整数。 | 例:1,ab{2,}。则匹配abb,abbb等。 |
| {n,m} | 匹配之前一个字符大于等于n次,小于等于m次。n,m为整数。 | 例:1,ab{2,5}。则匹配abb,abbb,abbbb,abbbbb。 |
| | | 匹配条件的或(OR)运算。匹配之前的运算式或匹配之后的运算式。 | 例:1,hello|world。则匹配hello或者world。 |
| () | 分组。被()括起来的运算式被看作为一组(group)。可以用1,9来加以引用。 |
- Relative Articles
- 【转载】The "Double-Checked Locking is Broken" Declaration - Java线程同步 - 双重检查问题 - (07-11-14 17:17)
- 有关Tomcat/JBoss的java.lang.ArrayIndexOutOfBoundsException: 8192错误 - (07-10-03 23:59)
- 正则表达式应用范例 - 使用正则表达式分拆英文字母与数字组合 - (07-10-02 16:11)
- 【特集】EJB的原理介绍之(一) - (07-08-06 23:28)
- 利用JAVA的动态属性之反射原理实现一个简单AOP容器 - AOP的实现原理分析(1) - (07-08-06 23:23)
- 【連載】Java Annotation之自定义篇 (2) - (07-08-01 00:15)
- 【連載】Java Annotation之介绍篇 (1) - (07-08-01 00:14)
- 【連載】Java Annotation之应用篇 – 运行期动态解析annotation (3) - (07-08-01 00:13)
- 怎么取得用户的 IP地址,并找出其相对应的国家地区(附例) - (07-05-29 00:34)
- 怎样在Java里调用外部进程? - (07-05-29 00:34)