练习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) 表示作为一个捕获组规范