正则表达式
正则表达式的作用:
是一些特殊字符组成的校验规则,可以校验信息的正确性,校验邮箱是否合法,电话号码,金额等。需求:演示不用正则表达式和用正则表达式校验QQ号码。
小结:
正则表达式很适合做校验,代码简单,优雅!
public class RegexDemo {
public static void main(String[] args) {
System.out.println(checkQQ("42422332"));
System.out.println(chechQQRegex("42422d332"));
}
// 用正则表达式
public static boolean chechQQRegex(String qq){
return qq!=null && qq.matches("\\d{4,}"); //\d是数字型,且不小于4位
}
// 演示不用正则表达式
public static boolean checkQQ(String qq){
// 1.判断是否为null
if(qq == null){
return false;
}else{
// 2.判断长度是否
if(qq.length() >= 4){
// 3.判断是否全部是数字
// 先定义一个变量存储最终校验的结果
boolean rs = true ; // 默认认为合法!
// 4.遍历字符串中的每个字符
for(int i = 0 ; i < qq.length() ; i++ ){
char ch = qq.charAt(i);
if(ch < '0' || ch > '9'){
rs = false ; // 不合法!!
}
}
return rs;
}else{
return false;
}
}
}
}
使用
字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def23]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)预定义字符类
. 任何字符
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]以上正则匹配只能校验单个字符。
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
public class RegexDemo02 {
public static void main(String[] args) {
//public boolean matches(String regex):判断是否与正则表达式匹配,匹配返回true
// 只能是 a b c
System.out.println("a".matches("[abc]")); // true
System.out.println("z".matches("[abc]")); // false
// 不能出现a b c
System.out.println("a".matches("[^abc]")); // false
System.out.println("z".matches("[^abc]")); // true
System.out.println("a".matches("\\d")); // false
System.out.println("3".matches("\\d")); // true
System.out.println("333".matches("\\d")); // false 只能校验一个
System.out.println("z".matches("\\w")); // true \w代表数字或字母
System.out.println("2".matches("\\w")); // true
System.out.println("21".matches("\\w")); // false
System.out.println("你".matches("\\w")); // false
// 以上正则匹配只能校验单个字符。
// 校验密码
// 必须是数字 字母 下划线 至少 6位
System.out.println("ssds3c".matches("\\w{6,}")); // true
System.out.println("ssdsc".matches("\\w{6,}")); // false
System.out.println("ssdsda232s你c".matches("\\w{6,}")); // false
// 验证。必须是数字和字符 必须是4位
System.out.println("dsd2".matches("[a-zA-Z0-9]{4}")); // true
System.out.println("A3dy".matches("[a-zA-Z0-9]{4}")); // true
System.out.println("A3dy2".matches("[a-zA-Z0-9]{4}")); // false
}
}
应用
实际运用:文章来源:https://www.toymoban.com/news/detail-509572.html
public class RegexDemo03 {
public static void main(String[] args) {
//checkEmail();
//checkTel();
//checkPhone();
}
private static void checkPhone() {
Scanner sc = new Scanner(System.in);
System.out.print("请您输入电话号码:");
String phone = sc.nextLine();
if(phone.matches("0\\d{2,5}-?\\d{5,15}")){
System.out.println("电话号码合法了!");
}else{
System.err.println("电话号码不正确!");
}
}
private static void checkTel() {
Scanner sc = new Scanner(System.in);
System.out.print("请您输入手机号码:");
String tel = sc.nextLine();
if(tel.matches("1[3-9]\\d{9}")){
System.out.println("手机号码合法了!");
}else{
System.err.println("手机号码不正确!");
}
}
// 校验邮箱
public static void checkEmail(){
Scanner sc = new Scanner(System.in);
System.out.print("请您输入邮箱:");
String email = sc.nextLine();
// 3232323@qq.com
// dlei082@163.com
// dlei@pic.com.cn
if(email.matches("\\w{1,}@\\w{2,10}(\\.\\w{2,10}){1,2}")){
System.out.println("邮箱合法了!");
}else{
System.err.println("邮箱格式不正确!");
}
}
}
Split_replaceAll
public String[] split(String regex):
– 按照正则表达式匹配的内容进行分割字符串,反回一个字符串数组。
public String replaceAll(String regex,String newStr)
– 按照正则表达式匹配的内容进行替换文章来源地址https://www.toymoban.com/news/detail-509572.html
public class RegexDemo01 { //以,分割
public static void main(String[] args){
//1.split的基本用法
String names = "张,魏,王";
String[] nameArrs = names.split(",");
for(int i = 0;i < nameArrs.length;i ++){
String name = nameArrs[i];
System.out.println(name);
//2.结合正则表达式分割
String names01 = "张123魏abc王4da";
//以匹配的正则表达式内容为分割
String[] nameArrs01 = names01.split("\\w+");
for(int i = 0;i < nameArrs01.length;i ++){
System.out.println(nameArrs01[i]);
}
//replaceAll
String names02 = "张123魏abc王4da";
System.out.println(names02.replaceAll("\\w+","/"));
}
} }
正则表达式爬取信息中的内容(了解)
public class RegexDemo05 {
public static void main(String[] args) {
String rs = "来黑马程序学习Java,电话020-43422424,或者联系邮箱" +
"itcast@itcast.cn,电话18762832633,0203232323" +
"邮箱bozai@itcast.cn,400-100-3233 ,4001003232";
// 需求:从上面的内容中爬取出 电话号码和邮箱。
// 1.定义爬取规则
String regex = "(\\w{1,}@\\w{2,10}(\\.\\w{2,10}){1,2})|(1[3-9]\\d{9})|(0\\d{2,5}-?\\d{5,15})|400-?\\d{3,8}-?\\d{3,8}";
// 2.编译正则表达式成为一个匹配规则对象
Pattern pattern = Pattern.compile(regex);
// 3.通过匹配规则对象得到一个匹配数据内容的匹配器对象
Matcher matcher = pattern.matcher(rs);
// 4.通过匹配器去内容中爬取出信息
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
到了这里,关于Java_正则表达式_14的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!