正则表达式(regular expressions)是一种描述字符串集的方法,它是以字符串集中各字符串的共有特征为依据的。正则表达式可以用于搜索、编辑或者是操作文本和数据。它超出了 Java 程序设计语言的标准语法,因此有必要去学习特定的语法来构建正则表达式。正则表达式的变化是复杂的,一旦理解了它们是如何被构造的话,就能解析或者构建任意的正则表达式了。
一、java.util.regex API 支持的正则表达式语法
java.util.regex 包主要由三个类所组成:Pattern、Matcher 和 PatternSyntaxException。
Pattern 对象表示一个已编译的正则表达式,Pattern 类没有提供公共的构造方法,要构建一个模式,首先必须调用公共的静态 compile 方法,它将返回一个 Pattern 对象。这个方法接受正则表达式作为第一个参数。
Matcher 是一个靠着输入的字符串来解析这个模式和完成匹配操作的对象。与 Pattern 相似,Matcher 也没有定义公共的构造方法,需要通过调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
PatternSyntaxException 对象是一个未检查异常,指示了正则表达式中的一个语法错误。
二、 使用方法
1.支持的基本通配符
. -可以匹配任意字符
\s -代表一个任意空白(空格、Tab)
\S -代表一个任意的非空白
\d -代表一个任意的数字(digital)
\D -代表一个任意的非数字
\w -代表一个单词字符
-W -代表一个任意的非单词字符
2.取值范围
? –代表它前面的东西可以出现0~1次(有或无)
* –代表它前面的东西可以出现0~N次
+ –代表它前面的东西可以出现1~N次
{n,m} –代表它前面的东西可以出现n~m次
{n,} –代表它前面的东西至少出现n次
{,m} –代表它前面的东西最多出现m次
{n} –代表它前面的东西必须出现n次
3.方括号表达式
枚举:[ab1] –代表a或b或者1
范围:[a-c] –代表a,b,c中的任意一个字符
枚举与范围:[a-c1-3]–代表a,b,c,1,2,3中的任意一个字符
表示求否:[^a-c] –代表不含a,b,c其中任意一个字符
表示求交:[a-g&&[^b-d]]:–代表a,e,f,g中的任意一个字符
表示必须含有其中之一:(com|org|cn)
实例1:验证邮箱地址是否规范
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo {
public static void main(String args[]){
//要验证的邮箱
String email="Todzhu@126.com";
//邮箱验证规则(正则表达式)
String regex="[\\w+\\d?[.-]]+@[\\w\\d]+\\.(com|org|cn|net)";
//编译正则表达式
Pattern pattern=Pattern.compile(regex);
//构建匹配
Matcher matcher=pattern.matcher(email);
//判断是否正则匹配
boolean regexmatch=matcher.matches();
if(regexmatch){
System.out.println("邮箱符合验证规则!");
System.out.println("======"+matcher.group()+"======");
}else{
System.out.println("邮箱验证失败!");
}
}
}
运行结果:
邮箱符合验证规则!
======Todzhu@126.com======
这些只是正则表达强大功能的很少一部分,至于更深层次的正则表达用法,等用到的时候再继续更新!