讲解
- 概述: 正则表达式其实就是一个匹配规则,用来替换之前复杂的if结构判断
- 在Java中,我们经常需要验证一些字符串,是否符合规则, 例如:校验qq号码是否正确,手机号码是否正确,邮箱是否正确等等。那么如果使用if就会很麻烦, 而正则表达式就是用来验证各种字符串的规则。它内部描述了一些规则,我们可以验证用户输入的字符串是否匹配这个规则。
- 先看一个不使用正则表达式验证的例子:下面的程序让用户输入一个QQ号码,我们要验证:
- QQ号码必须是5–15位长度
- 而且必须全部是数字
- 而且首位不能为0
- 在这里插入代码片
public class Test {
public static void main(String[] args) {
/*
下面的程序让用户输入一个QQ号码,我们要验证:
- QQ号码必须是5--15位长度
- 而且必须全部是数字
- 而且首位不能为0
*/
System.out.println(checkQQ1("123456"));// true
System.out.println(checkQQ1("1234"));// false
System.out.println(checkQQ1("12345a567"));// false
System.out.println(checkQQ1("012345"));// false
}
/**
* 校验输入的qq号码是否符合规则
* @param qq
* @return
*/
public static boolean checkQQ1(String qq) {
// qq号码长度不是5-15位,直接返回false
if (qq.length() < 5 || qq.length() > 15) {
return false;
}
// 如果qq号码中有任何一位不是数字,就直接返回false
for (int i = 0; i < qq.length(); i++) {
// 获取每一位字符
char c = qq.charAt(i);
// 判断
if (c < '0' || c > '9') {
return false;
}
}
// 如果首位是0,就直接返回false
if (qq.charAt(0) == '0') {
return false;
}
// qq号码合法,直接返回true
return true;
}
}
正则表达式代码
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的QQ号码:");
String qq = sc.next();
System.out.println(checkQQ2(qq));
}
//使用正则表达式验证
private static boolean checkQQ2(String qq){
String regex = "[1-9]\\d{4,14}";//正则表达式
return qq.matches(regex);
}
}
正则表达式-字符类
- 语法示例:[] 表示匹配单个字符 ^ 取反 - 范围
- [abc]:代表a或者b,或者c字符中的一个。
- [^abc]:代表除a,b,c以外的任何字符。
- [a-z]:代表a-z的所有小写字符中的一个。 左右包含
- [A-Z]:代表A-Z的所有大写字符中的一个。
- [0-9]:代表0-9之间的某一个数字字符。
- [a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符。
- [a-dm-p]:a 到 d 或 m 到 p之间的任意一个字符。
正则表达式-逻辑运算符
- 语法示例:
- &&:并且
- | :或者
正则表达式-预定义字符
- 语法示例:
- “.” : 匹配任何字符。如果要表示一个字符点,那么就得使用\.
- “\d”:任何数字[0-9]的简写;
- “\D”:任何非数字[^0-9]的简写;
- “\s”: 空白字符:[ \t\n\x0B\f\r] 的简写
- “\S”: 非空白字符:[^\s] 的简写
- “\w”:单词字符:[a-zA-Z_0-9]的简写
- “\W”:非单词字符:[^\w]
正则表达式-数量词
- 语法示例:
- X? : 0次或1次
- X* : 0次到多次
- X+ : 1次或多次
- X{n} : 恰好n次
- X{n,} : 至少n次,包含n
- X{n,m}: n到m次(n和m都是包含的)
更多推荐
正则表达式判断
发布评论