现在的位置: 首页 > 综合 > 正文

Java基础复习:正则表达式

2013年05月26日 ⁄ 综合 ⁄ 共 1865字 ⁄ 字号 评论关闭

练习1:编写一个方法判断给定的字符串是否为全数字组合

练习2:编写一个方法判断给定的字符串是否为电话号码

package day7;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * java.util.regex包
 * Pattern类主要是编写正则表达式规范;
 * Matcher类主要是执行规范,验证字符串是否符合其规范;
 */
public class RegexDemo {
	public static void main(String[] args) {
		String str = "1234";
		String str1 = "a234";
		System.out.println(isDigitCom(str));//true
		System.out.println(isDigitCom(str1));//false
		
		String str2 = "025-12345678";
		System.out.println(isPhoneNumCom(str2));//true
	}
	
	/**
	 * 判断给定的字符串是否为全数字组合
	 * @param str 待判断的字符串
	 * @return 若为全数字组合返回true,否则返回false
	 */
	public static Boolean isDigitCom(String str){
		//1.写规范
		String regex = "[0-9]+";
		//regex = "\\d+";
		//2.将给定的正则表达式编译到模式中
		Pattern p = Pattern.compile(regex);
		//3.创建匹配给定输入与此模式的匹配器
		Matcher m = p.matcher(str);
		//4.尝试将整个区域与模式匹配。
		boolean b = m.matches();
		return b;
	}
	
	/**
	 * 判断给定的字符串是否为电话号码:025-12345678、0515-1234567
	 * @param str
	 * @return
	 */
	public static Boolean isPhoneNumCom(String str){
		String regex = "[0]{1}\\d{2}-[1-9]{1}\\d{7}|[0]{1}\\d{3}-[1-9]{1}\\d{6}";
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(str);
		Boolean b = m.matches();
		return b;
	}
}

 

String类有三个方法支持正则表达式:

 

boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式。

String replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串

String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。

 

这样可以简化匹配过程:代码可变为如下:

public class RegexDemo2 {
	public static void main(String[] args) {
		//判断一个字符串是否为全数字组合
		String regex = "[0-9]+";
		String str = "12324";
		String str1 = "a234";
		System.out.println(str.matches(regex));//true
		System.out.println(str1.matches(regex));//false
		
		//判断一个字符串是否为电话号码
		String regex2 = "[0]{1}\\d{2}-[1-9]{1}\\d{7}|[0]{1}\\d{3}-[1-9]{1}\\d{6}";
		String str2 = "025-12345678";
		System.out.println(str2.matches(regex2));//true
	}
}

Pattern类定义了正则表达式的规范:常用的如下

规范1:

[abc] 表示字符a、b或c

[^abc] 表示除了a、b或c之外的任意字符

[0-9] 表示0-9之间的任意数字

[a-zA-Z0-9] 表示字母或数字

\\d 表示任意数字

 

规范2:(X表示一组规范)

X 必须出现一次

X? 出现0或1次

X* 出现0次或0次以上

X+ 出现1次或1次以上

X{n} 必须出现n次

X{n,} 必须出现n次以上

X{n,m} 出现n到m次

 

规范3:(X、Y表示一组规范)

XY 表示X规范后跟着Y规范

X|Y 表示X规范或Y规范

(X) 表示作为一个捕获组规范

 

抱歉!评论已关闭.