关于Java中的正则表达式匹配
正则简单示例:
在线正则表达式网址:https://any86.github.io/any-rule/
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:
Pattern:Pattern是一个正则表达式经编译后的表现模式
Matcher:Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查
public static void main(String[] args) { /*定义要进行验证的手机号码*/ String cellPhoneNumber = "15817784252"; /*定义手机号码正则*/ String phoneRegex = "^(?:(?:\\+|00)86)?1(?:(?:3[\\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\\d])|(?:9[189]))\\d{8}$"; /* 第一种:使用String类 说明此字符串是否与给定的正则表达式匹配。 参数: regex–此字符串要与之匹配的正则表达式 返回值: 当且仅当此字符串与给定正则表达式匹配时为true */ boolean stringMatches = cellPhoneNumber.matches(phoneRegex); System.out.println("使用String类进行比较结果:" + stringMatches); /*第二种:使用Pattern * 将给定的正则表达式编译为模式。 * 参数: regex–要编译的表达式 * 返回值: 已编译为模式的给定正则表达式 * */ Pattern pattern = Pattern.compile(phoneRegex); /*创建一个匹配器,该匹配器将根据此模式匹配给定的输入。 参数: 输入–要匹配的字符序列*/ Matcher matcher = pattern.matcher(cellPhoneNumber); /*字符串是否与正则表达式相匹配*/ boolean patternMatches = matcher.matches(); System.out.println("使用Pattern类的matcher进行比较结果:" + patternMatches); /*第三种:使用Pattern的两个参数构造器 * 参数1: 正则表达式 * 参数2: 要匹配的字符序列 * 返回值: 正则表达式是否与输入匹 * */ boolean constructorMatches = Pattern.matches(phoneRegex, cellPhoneNumber); System.out.println("使用Pattern类的matcher重载进行比较结果" + constructorMatches); }
判断字符串中是否包含数字
// 判断字符串包含数字 方法一 public static boolean testIsNumMethodOne(String str) { boolean flag = false; String numStr = "0123456789"; for (int i = 0; i < str.length(); i++) { String subStr = str.substring(i, i+1); if (numStr.contains(subStr)) { flag = true; } } return flag; } // 判断字符串包含数字 方法二 public static boolean testIsNumMethodTwo(String str) { boolean flag = false; Pattern pattern = Pattern.compile("[0-9]+"); Matcher matcher = pattern.matcher(str); if (matcher.find()) { flag = true; } return flag; } // 判断字符串包含数字 方法三 public static boolean testIsNumMethodThree(String str) { boolean flag = false; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c > 48 && c < 57) { flag = true; } } return flag; } // 判断字符串包含数字 方法四 public static boolean testIsNumMethodFour(String str) { boolean flag = false; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (Character.isDigit(c)) { flag = true; } } return flag; }