正如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类补充:正则表达式)的更多相关文章

  1. Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式

    一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...

  2. java学习笔记之String类

    String类总结 String类概述: java.lang.String 类是字符串操作类 String类的常用构造方法: //1.直接赋值 String str= "hellojava& ...

  3. java学习笔记5——String类常用方法

    1.字符串长度计算: int i = String1.length(); 2.字符串比较:1) equals()和equalsIgnoreCase //比较两个字符串对象的实体是否相同,相同输出tru ...

  4. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...

  5. 【原】Java学习笔记023 - 字符串缓冲区_正则表达式

    package cn.temptation; import java.util.Arrays; public class Sample01 { public static void main(Stri ...

  6. Java学习笔记16---抽象类与接口的浅显理解

    抽象类是由abstract修饰的类,定义方式如public abstract class A{...}. 接口由interface修饰,定义方式如public interface B{...}. 抽象 ...

  7. 【原】Java学习笔记031 - 常用类

    package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ...

  8. 1.9(java学习笔记)object类及toString()与equals()方法

    object类 java中objec是所有类公共的父类,一个类只要没有明显的继承某一类,那么它就是继承object类. 例如 class Person {......};和class Person e ...

  9. Java学习笔记day06_自定义类_ArrayList

    1.自定义类class 使用类的形式, 对现实中的事物进行描述. 类是引用数据类型. 事物: 方法,变量. 方法:事物具备的功能. 变量:事物的属性. 格式: public class 类名{ //属 ...

随机推荐

  1. 命令行保存指定目录文件的名字(可包含文件夹文字)到txt文本文件

    Microsoft Visual Studio中配置OpenCV解决方案属性的时候, 需要将OpenCV的lib扩展名的库文件添加到属性的依赖列表里面,网上的有些人博客里面直接给出的会有问题(但大多数 ...

  2. Ubuntu下deb包的解压、打包、安装、卸载及常用命令参数

    1.首先下载deb包,比如:将其放在 /home/tools/ 根目录下: 2.进入到tools根目录下的终端,输入下面命令创建文件夹extract,并在extract文件夹下创建DEBIAN文件夹 ...

  3. Java深入 - MyBatis的经常用法

    MyBatis我们这篇文章主要记录一些经常使用的操作方法.这样在开发和使用的过程中这篇文章能够当做工具书来使用. MyBatis的数据源配置 <bean id="dataSource& ...

  4. 浅谈MySQL中的查询优化

    mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等.这里的记录的优化技巧更适用于开发人员,都是从网络上收集和自己整 ...

  5. Redis的那些最常见面试问题

    随笔:经过长达一周的奔波和面试,电话面试,回首今天终于成功的入职了,总共面试了大概10家公司,包括阿里,京东,IBM等等,京东技术过了,学历因为非统招就被pass了,阿里面了2次电话面试就没下文了,估 ...

  6. 机器学习 - pycharm, tensorflow集成篇

    继续上篇的pyspark集成后,我们再来看看当今热的不得了的tensorflow是如何继承进pycharm环境的 参考: http://blog.csdn.net/include1224/articl ...

  7. CoreJava逻辑思维-顺时针打印自定义矩阵

    CoreJava逻辑思维-顺时针打印自定义矩阵 这两天回顾了一下刚入Java时的一些比较有意思的逻辑题,曾经也费劲脑汁的思考过的一些问题,比如百钱百鸡最简单的算法啦之类的,而今天博主想说的是一个循环打 ...

  8. 「mysql优化专题」90%程序员面试都用得上的索引优化手册(5)

    目录(技术文) 多关于索引,分为以下几点来讲解: 一.索引的概述(什么是索引,索引的优缺点) 二.索引的基本使用(创建索引) 三.索引的基本原理(面试重点) 四.索引的数据结构(B树,hash) 五. ...

  9. Vue-Methods中使用Filter

    1.Vue中Filter声明方式 Vue中存在两种声明Filter过滤器的方式: 1.全局过滤器 Vue.filter('testFilter1',function(val){ console.log ...

  10. Android(Java) 字符串的常用操作,获取指定字符出现的次数,根据指定字符截取字符串

    /*这是第100000份数据,要截取出100000*/ String s="这是第100000份数据"; String s1 = s.substring(s.indexOf(&qu ...