Java学习笔记21(String类补充:正则表达式)
正如python的re模块,不过Java和Python的正则表达式有一些区别,这里做简单介绍,具体的细节可以参考网上其他的文章:
功能:可以用于检验一个字符串,比如验证用户名,验证密码格式,验证是否是邮箱,等等
示例:
"[0-9]{6,12}"匹配规则:6到12位的数字,比如123456789就是true,12345就是false
"1[3578][0-9]{9}"匹配规则:1开头,第二位是3578中的一个,后面九个任意数字,比如13345678912就是true
"a*b"匹配规则:在多个a或者0个a之后有一个b,b必须是最后一个字符,比如aaaaab就是true,abc就是false
String类中还有几个方法上篇没有提到,这里会用到
基础知识不再介绍,示例:
matches方法:
package demo;
public class RegexDemo {
    public static void main(String[] args) {
        //检查QQ号码,不能0开头,全数字,5位到10位
        checkQQ();
        //检查手机号,1开头,第二位是34578,共11位
        checkTel();
    }
    public static void checkQQ(){
        String QQ = "123456";
        boolean b = QQ.matches("[1-9][\\d]{4,9}");
        System.out.println(b);//true
    }
    public static void checkTel(){
        String telNumber = "13312345678";
        boolean b = telNumber.matches("1[34578][\\d]{9}");
        System.out.println(b);//true
    }
}
split方法:
package demo;
public class RedexDemo {
    public static void main(String[] args) {
        split_1();
        split_2();
        split_3();
    }
    public static void split_1(){
        String str = "I   love         java";
        String[] strArr = str.split(" +");
        for (int i = 0; i < strArr.length; i++) {
            System.out.println(strArr[i]);
        }
        //打印出:I         love       java
    }
    public static void split_2(){
        String str = "10-12-45-78-62";
        String[] strArr = str.split("-");
        for (int i = 0; i < strArr.length; i++) {
            System.out.println(strArr[i]);
        }
        //打印出:10           12        45        78        62
    }
    public static void split_3(){
        String str = "192.168.160.1";
        String[] strArr = str.split("\\.");
        for (int i = 0; i < strArr.length; i++) {
            System.out.println(strArr[i]);
        }
        //打印出:192    168        160        1
    }
}
replaceAll方法:
package demo;
public class RedexDemo {
    public static void main(String[] args) {
        replaceAll_1();
    }
    public static void replaceAll_1(){
        String str = "Hello666123Ilove789java";
        String str1 = str.replaceAll("[\\d+]","#");
        System.out.println(str1);
        //输出:Hello######Ilove###java
        String str2 = str.replaceAll("[\\d]+", "#");
        System.out.println(str2);
        //输出:Hello#Ilove#java
    }
}
正则表达式练习:
package demo;
public class RedexDemo {
    public static void main(String[] args) {
        //检查邮箱地址
        checkMail();
    }
    public static void checkMail(){
        String email = "abc123@sina.com.cn";
        boolean b = email.matches("[a-zA-Z0-9_]+@[0-9a-z]+(\\.[a-z]+)+");
        System.out.println(b);//true
    }
}
Java学习笔记21(String类补充:正则表达式)的更多相关文章
- Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式
		一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ... 
- java学习笔记之String类
		String类总结 String类概述: java.lang.String 类是字符串操作类 String类的常用构造方法: //1.直接赋值 String str= "hellojava& ... 
- java学习笔记5——String类常用方法
		1.字符串长度计算: int i = String1.length(); 2.字符串比较:1) equals()和equalsIgnoreCase //比较两个字符串对象的实体是否相同,相同输出tru ... 
- java学习笔记7--抽象类与抽象方法
		接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ... 
- 【原】Java学习笔记023 - 字符串缓冲区_正则表达式
		package cn.temptation; import java.util.Arrays; public class Sample01 { public static void main(Stri ... 
- Java学习笔记16---抽象类与接口的浅显理解
		抽象类是由abstract修饰的类,定义方式如public abstract class A{...}. 接口由interface修饰,定义方式如public interface B{...}. 抽象 ... 
- 【原】Java学习笔记031 - 常用类
		package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ... 
- 1.9(java学习笔记)object类及toString()与equals()方法
		object类 java中objec是所有类公共的父类,一个类只要没有明显的继承某一类,那么它就是继承object类. 例如 class Person {......};和class Person e ... 
- Java学习笔记day06_自定义类_ArrayList
		1.自定义类class 使用类的形式, 对现实中的事物进行描述. 类是引用数据类型. 事物: 方法,变量. 方法:事物具备的功能. 变量:事物的属性. 格式: public class 类名{ //属 ... 
随机推荐
- JavaWeb学习总结(一)——JavaWeb开发入门(转)
			转载自 http://www.cnblogs.com/xdp-gacl/p/3729033.html 一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示In ... 
- org.hibernate.LazyInitializationException could not initialize proxy-no Session的解决
			方法一:在web.xml配置延迟关闭session的过滤器 <!-- 延迟关闭session OpenSessionInViewFilter 的顺序位于struts2过滤之上 否则延迟关闭ses ... 
- UI - Cocoa Touch框架
			Cocoa Touch 层 Cocoa Touch层包括创建 iOS应用程序所需的关键框架. 上至实现应用程序可视界面,下至与高级系统服务交互.都须要该层技术提供底层基础.在开发应用程序的时候.请尽可 ... 
- 【CODEFORCES】 A. Dreamoon and Sums
			A. Dreamoon and Sums time limit per test 1.5 seconds memory limit per test 256 megabytes input stand ... 
- Microsoft Graph Web应用程序极致开发体验
			作者:陈希章 重写于 2017年5月24日 前言 这篇文章最早写于2017年5月2日,当时的想法是从最简单的方式来写如何在一个ASP.NET MVC应用程序中集成Microsoft Graph,但实际 ... 
- 唐纳德 高德纳给年轻人的建议 Donald Knuth - My advice to young people
			From: Donald Knuth - My advice to young people (93/97) 译者: 李秋豪 原文 Donald Knuth (b. 1938), American c ... 
- .NET 对 XML 进行创建,增加,删除,修改操作整理
			前言: 最近做了一个项目,程序A在一个服务器程序B在另一台服务器,然而主程序A需要访问程序B的图片集文件夹下载到本服务器上,为了防止多次对Web Services进行调用,在主程序A中创建一个XML文 ... 
- MVC+EF 入门教程(一)
			一.前言 本人小白,写这篇博客是为了记录今天一天所学的知识,可能表达不是那么的准确和清楚,欢迎在留言区写下您的建议,欢迎纠错.希望这篇文章对你有所帮助学习 .Net MVC有所帮助.废话不多说了,我们 ... 
- 浏览器兼容性--IE11以及Edge等下载文件的中文名出现乱码,前后端解决方案
			项目中有用到文件下载功能,之前在处理下载时对IE浏览器下文件下载名进行过处理,测试也没有问题,但是功能上线后,业务反馈IE11文件下载文件名依然乱码.打印User-Agent字符串如下: IE11 U ... 
- iOS手势冲突问题
			今天在做一个效果的时候,由于子视图和父视图都有响应的事件,子视图的事件理所当然被父视图拦截掉了,接下来就做分析解决 1. tableviewcell可以触发点击,同时tableview的父视图有点击 ... 
