java1.4开始支持正则表达式,包是java.util.regex。在regex包中,包括了两个类,Pattern(模式类)和Matcher(匹配器类)。Pattern类是用来表达和陈述所要搜索模式的对象,Matcher类是真正影响搜索的对象。另加一个新的例外类,PatternSyntaxException,当遇到不合法的搜索模式时,会抛出例外。
Java中的String类提供了支持正则表达式操作的方法,包括:matches()、replaceAll()、replaceFirst()、split()。此外,Java中可以用Pattern类表示正则表达式对象,它提供了丰富的API进行各种正则表达式操作。
实例:验证手机号码
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 类名称:RegExpTest
* 描述:正则表达式测试
* 创建人:wangql
* 创建时间:2017-2-22
*/
public class RegExpTest {
/**
* 方法名:测试手机号码
* 开发者:wangql
* 开发时间:2017-2-22
*/
public static void main(String[] args) {
String str = "18812344321";//手机号码
Pattern p = Pattern.compile("^(((13[0-9]{1})|(14[0-9]{1})|(17[0-9]{1})|(15[0-3]{1})|(15[5-9]{1})|(18[0-9]{1}))+\\d{8})$");
Matcher m = p.matcher(str);
if(m.find()) {
System.out.println("验证通过:"+m.group());
}else {
System.out.println("手机号码有误");
}
}
}
matches()方法下的find()和matches()方法。
matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为数字类型或其他类型,一般要用matches()。
public static void main(String[] args) {
String str = "18812344321";
Pattern p = Pattern.compile("^(((13[0-9]{1})|(14[0-9]{1})|(17[0-9]{1})|(15[0-3]{1})|(15[5-9]{1})|(18[0-9]{1}))+\\d{8})$");
Matcher m = p.matcher(str);
boolean flag = m.matches();
boolean flag1 = m.find();
System.out.println(flag);
System.out.println(flag1);
}
执行结果
true
false
参考文章:
JAVA正则表达式,matcher.find()和 matcher.matches()的区别