正则表达式基本概念:
正则表达式定义了字符串的模式,本质是一种特殊的字符串对象。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不局限于某一种语言,但是在每种语言中有细微的差别。
JAVA程序使用证正则表达式:
字符串常用方法:
String 支持正则表达式方法:
.replaceAll() 方法使用给定的参数 replacement 替换字符串所有匹配给定的正则表达式的子字符串。
.replaceFirst()方法使用给定的参数 replacement 替换字符串第一个匹配给定的正则表达式的子字符串。
.split() 方法用于把一个字符串String分割成字符串数组String[]。
.matches()方法用于检测字符串是否匹配给定的正则表达式。
调用此方法的 str.matches(regex) 形式与以下表达式产生的结果完全相同:
正则表达式基本语法规则:
"[\\u4e00-\u9fa5\s]+"匹配汉字和空格,最少一个 ,可以多个,没有上限;
\\d+和[0-9]{1,}是同一个表达式,用途一样。
实例应用练习:
// 判断一组字符中有没有xxx System.out.println("today11.1".contains("12")); System.out.println("today11.1".contains("11")); // 判断一组字符是不是一位数字 System.out.println("today11.1".matches("\\d")); System.out.println("today11.1".matches("[0-9]{1,}")); // 判断一组字符中有没有一个数字 " . ” 代表任意一个字符,“ * ”代表{0,} System.out.println("today11.1".matches(".*\\d.*"));
正则表达式相关的类:
java.util.regex.Pattern类/ Matcher类
Matcher类的. matches() 方法是判断字符串和正则表达式是不是匹配,如果匹配就返回true,否 则返回false。
find() 方法,是Matcher类通过find()方法,返回布尔true 或 false,一般用于while循环语句,用 来遍历心有匹配的结果.
group()
实例应用:
使用分组演示功能:
总结:
[a-zA-Z]代表一个字母。
[a-zA-Z]+此表达式和[a-zA-Z]{1,}一样,代表最少是一个字母,无上限。
[^a-zA-Z]^代表取反 非字母。
了解"[^a-zA-Z]+([a-zA-Z]{4,6})+[^a-zA-Z]+"正则表达式的使用
实例应用练习:
从字符串,检索所有英文单词,并打印出来,要求全部小写,首字母大写:
判断一个字符串有没有字母:
正则表达式规则:
实例应用:
案例:项目会员注册,在注册时姓名(要么是全中文,要么是全英文,不是中文混合):
实例应用练习:
判断手机号是否是合法的手机号:
思路;(遍历判断)
使用正则表达式判断电话号码是否正确:(相对 简洁方便)
. 判断账号的规则(不能是数字开头,可以有字母 数字 还可以有下滑线,长度必须在6位-12 位):
正则表达式贪婪、禁用贪婪:
在正则表达式中,有些表达式有可选的范围,java正则表达式会在此选最大支持范围,这样模式贪 婪模式。 \\d{3} 没有贪婪模式 \\d+ 有范围{1,} 有贪婪,能选最多就默认选最大的。如果要禁用贪婪,应该在表达式的量词后加 一个 ? 号
实例应用:
实例应用练习:
1. 正则判断一个字符串是全中文
2. 正则判断一个字符串有没有中文汉字
3. 正则实现在一个字符串,取所有数字,包括负数,并求和。
4. 求出123456789 不改变数字位置,随机放加减保证和为100,请写出这样的表达式?
正则表达式分组:
正则表达式分组,就是在表达式字符串中用 () 包括起来,就是一组,组是从1开始,如果没 有使用括号,就是0组。 groupCount() Matcher类的方法,用来返回有多少组,可能是0也可以是1
分组作用:正则表达式分组,主要用来处理字符串某组(删除,检索,替换)
![]()
正则表达式实例应用:
// 正则表达式 String str = "10月28Pm"; if (str.matches(".*[\\u4e00-\\u9fa5]+.*")) { System.out.printf("%s:含有中文字符%n", str); } String str1 = "十月二十八日下午"; if (str1.matches(".*[\\u4e00-\\u9fa5].*")) { System.out.printf("%s:全是中文字符%n", str1); } if (str.matches(".*[A-Z].*")) { System.out.printf("%s:含有大写字母%n", str); } if (str.matches(".*[a-z].*")) { System.out.printf("%s:含有小写字母%n", str); } if (str.matches(".*[0-9].*")) { System.out.printf("%s:含有数字%n", str); }