正则表达式
一. 引言&概述
- 为什么要讲正则表达式?
帮我们简化字符串的操作(判断、替换、切割…..)
正则表达式: 正确规则 的表达式
- 作用:
简化字符串的操作(判断、替换、切割…..)
- 伪代码:
判断当前字符串是否为一个QQ号
正确规则的式子: “要求是纯数字,要求5~10位,不能以0开头”
二.快速入门使用
话不多说,直接上案例使用:
检查校验字符串中的QQ号是否如何如下规则: ①必须为5~15位数字 ②不能以0开头 |
---|
如果不用正则是这样写的:
/*
* 入门案例:不用正则
* */
public static void main(String[] args) {
//1、准备一个待校验的QQ号
String str = "1231234";
//2、判断:QQ号必须是数字
try {
int i = Integer.parseInt(str);
} catch (NumberFormatException e) {
System.out.println("QQ号不对");
return;
}
//3、判断:QQ号5~15位之间,不能以0开头
if(str.length()>=5 && str.length()<=15
&& !str.startsWith("0")){
System.out.println("QQ号格式正确");
}else{
System.out.println("QQ号不对");
}
}
使用正则:
/*
* 入门案例:用正则
* */
public static void main(String[] args) {
//1、准备一个待校验的QQ号
String str = "1231234";
//2、定义一个正则表达式 本阶段的Java编程中,正则表达式 都是以 字符串 形式出现
String reg = "[1-9][0-9]{4,14}";
//3、判断 matches匹配
boolean b = str.matches(reg);
System.out.println(b?"qq号格式正确":"qq号不对");
}
三. Java中正则表达式的用法【重点】
方法名 |
描述 |
boolean matches(String regex) |
当前字符串是否匹配给定的正则表达式 true:匹配 false:不匹配 |
String replaceAll(String regex,String replacement) |
使用replacement替换当前字符串中所有符号正则表达式的内容 |
String[] split(String regex) |
根据给定的正则表达式拆分当前字符串 |
public static void main(String[] args) {
//需求:校验手机号
//1、为11位数字
//2、第一位为1,第二位3,4,5,7,8 后面的位数0-9
String num = "18810033112";
String reg = "1[34578][0-9]{9}";
System.out.println(num.matches(reg));
}
public static void main(String[] args) {
// 举例:将字符串中的数字全部替换成!号
String str = "1a2b3c4d";
//正则:
System.out.println(str.replaceAll("[0-9]","!"));
System.out.println(str.replaceAll("\\d","!"));
}
public static void main(String[] args) {
String str = "abcAAAabcAAAcdeAAAccAA";
// 要求替换所有的AAA为0
// 效果:abc0abc0cde0ccAA
String reg = "[A]{3}";
String ss = str.replaceAll(reg, "0");
System.out.println(ss);
}
public static void main(String[] args) {
String str = "你说今天天气不是你想要的,你想全世界都变成你想变成的样子,你告诉我今天你要吃蛋糕,我买了蛋糕,你却说今天你要减肥";
System.out.println(str.replaceAll("你.","你好"));
}
四. 常见正则表达式
表达式 |
描述 |
^[a-z0-9_-]{3,16}$ |
用户名 |
^[a-z0-9_-]{6,18}$ |
密码 |
^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$ |
电子邮箱 |
[\u4e00-\u9fa5] |
匹配中文字符的正则表达式 |
案例使用:
- 题目:
从控制台输入一个字符串。使用正则来对字符串进行一系列操作: ①判断字符串是否是一个合格的用户名 ②将字符串中的数字用”#”号替代. 数字的正则:[0-9] 或者 \\d ③根据”#”号将字符串切割成字符串数组并遍历展示 |
---|
public static void main(String[] args) {
//1、控制台接收字符串
Scanner scan = new Scanner(System.in);
System.out.println("控制台输入一个字符串:");
String username = scan.nextLine();
//2、判断
String reg = "^[a-z0-9_-]{3,16}$";
System.out.println(username.matches(reg)?"合格":"不合格");
//3、替换
username = username.replaceAll("\\d","#");
//4、切割
String[] arr = username.split("#");
System.out.println(Arrays.toString(arr));
}
下篇将详解,<正则表达式-附录>这更是重点哦!
实时关注动态噢!!!
请给努力中的自己点个赞哦!
每天进步一点点`~~~~~
来源:oschina
链接:https://my.oschina.net/ithuang/blog/3218581