java正则表达式最简单 学习教程

本大教程以一个验证手机号的表达式为例,学完本例后,基本上所有的表达式都能看懂了,但是如果想要达到上手就能写的程度,还需要多练习多测试 呀!

来看 这样一个代码

String mobilePhoneReg = "^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$";
if (!mobilephone.matches(mobilePhoneReg)) {
showToast("手机号码格式不正确!");
return false;
}

1、字符串“13”

单从最开始的13来看,如果正则表达式的字符串是“13”,意味着匹配“13”这个字符串,如果不是“13”肯定就是matches的结果为false.

2、英文句号“.”

“.”的含义,其实可以理解为一个占位符,“1.3”表示匹配三位数,开头和结尾必须是1和3,例如“143”,“1..3”标识匹配四位数,例如“143”现在匹配的话就匹配不上了。

3、方括号“[]”

“[]”可以看作是“.”的延伸,都是一个占位符,区别只在于"[]"对元素进行了进一步的限定,例如“1[fb4]3”表示只匹配“143”、“1f3”、“1b3”这三个,如果是别的,统统就不接受了。

4、圆括号“()”

“()”相比“[]”又有所扩大,"[]"只是一个占位符,“()”则可以表示多个占位符,例如“1(abc)3”表示只匹配“1abc3”,当然你还可以用“|”来支持群组匹配的效果,例如“1(abc|2)3”表示只匹配“1abc3”或者“123”。

5、“|”

在圆括号中时候实际上已经提到了,“|”的作用就如同他在代码中的含义:或者。

6、“-”

“-”在正则表达式中可能出现在两种场景,一个单独出现“-”,一个是“\-”,两种场合的意义当然也是不同的,前者表示区间概念,比如“1[1-3]3”,表示匹配“113”、“123”、“133”,出现在括号外部当然意图就是一个纯粹的符号-,这时候要用到转义字符“\”,例如“1[\-]3”表示只匹配字符“1-3”

7、表示匹配次数系列

值得注意的是,表示匹配次数系列的符号都是针对他们的上一个字符起效的,比如“13*”表示匹配“1....”,“13+”表示匹配“13....”,“13?”表示匹配“1”或“13”,“13{2}”表示匹配“133”,“13{2,3}”表示匹配“133”或者“1333”.

8、灭绝师太“^”

“^”表示否定含义,必须用于括号内,它在谁前面,就表示不允许谁出现了。例如“[^1]3”表示匹配除了1开头以外第二位是3的。

9、“/s”

“/s”表示一个空格,例如“/s+”表示匹配至少一个空格

时间: 2024-12-18 07:23:00

java正则表达式最简单 学习教程的相关文章

spring4.0.6最新稳定版新特性学习,简单学习教程(一)

Spring Framework 4.0 学习整理. Spring框架的核心部分就是Ioc容器,而Ioc控制的就是各种Bean,一个Spring项目的水平往往从其XML配置文件内容就能略知一二,很多项目,往往是外包公司的项目,配置文件往往是乱七八糟,抱着能跑就行,不报错就行的态度去写,然后在项目中后期发现各种缺失又去一通乱补,其结果就是,整个文档可读性极差,毫无章法.这也不能怪写这个XML的人,拿着苦逼程序员的工资干着架构师的工作必然是这个结果.为了程序员的幸福,我认为有必要来一套简单快速的官方

【Java线程池快速学习教程】

1. Java线程池 线程池:顾名思义,用一个池子装载多个线程,使用池子去管理多个线程. 问题来源:应用大量通过new Thread()方法创建执行时间短的线程,较大的消耗系统资源并且系统的响应速度变慢.[在一个什么程度上能够判断启用线程池对系统的资源消耗比启动定量的new Thread()资源消耗低?这个怎么测试?][用户体验卡顿?慢?观察CPU百分比?] 解决办法:使用线程池管理短时间执行完毕的大量线程,通过重用已存在的线程,降低线程创建和销毁造成的消耗,提高系统响应速度. 2. Java线

【Java的JNI快速学习教程】

1. JNI简介 JNI是Java Native Interface的英文缩写,意为Java本地接口. 问题来源:由于Java编写底层的应用较难实现,在一些实时性要求非常高的部分Java较难胜任(实时性要求高的地方目前还未涉及,实时性这类话题有待考究). 解决办法:Java使用JNI可以调用现有的本地库(C/C++开发任何和系统相关的程序和类库),极大地灵活Java的开发. 2. JNI快速学习教程 2.1 问题: 使用JNI写一段代码,实现string_Java_Test_helloworld

关于java并发的简单学习

计算机的使用者一直以为他们的计算机可以同时做很多事情.他们认为当其他的应用程序在下载文件,管理打印队列或者缓冲音频的时候他们可以继续在文字处理程序上工作.甚至对于单个应用程序,他们任然期待它能在在同一时间做很多事情.举个例子,一个流媒体播放程序必须能同时完成以下工作:从网络上读取数字音频,解压缩数字音频,管理播放和更新程序显示.甚至文字处理器也应该能在忙于重新格式化文本和刷新显示的情况下同时响应键盘和鼠标事件.这样的软件就被称为并发软件. 通过Java语言和Java类库对于基础并发的支持,Jav

java爬虫Jsoup简单学习

啥是jsoup? jsoup我就不巴拉巴拉了,具体介绍百度或者去官网查看. jsoup怎么用? jsoup和jquery的操作相似,下面简单使用一下. 使用jsoup大概也就以下几个步骤: 获取整个html文档使用选择器获取需要爬的数据节点集合循环遍历使用选择器获取相应数据实例 这是项目结构也就普通的一个测试项目,需要导入jsoup-x.xx.x.jar包,然后建一个实体类. 我们就拿这个叽歪笑话来说. 每一个笑话对应一个div. 创建一个测试main方法通过Jsoup.conect(url).

Java 递归的简单学习与理解

递归概述 概念:指在当前方法内调用自己的这种现象. 递归的分类:递归分为两种,直接递归和间接)递归. 直接递归称为方法自身调用自己 间接递归可以A方法调用B方法,B方法调用方法,C方法调用A方法. 注意事项: 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出. 在递归中虽然有限定条件,但是递归次数不能太多,否则也会发生栈内存溢出. 构造方法,禁止递归. 假如有方法A,没有限制,不断的递归A方法,那么分配的栈内存中就有无数个A方法,最终导致栈内存溢出.构造方法中不可以递归,因为构造

MongoDb 学习教程

MongoDB教程首页 MongoDB 介绍 MongoDB 优点 MongoDB 安装(Window/Linux) MongoDB 数据模型 MongoDB 创建数据库 MongoDB 删除数据库 MongoDB 创建集合 MongoDB 删除集合 MongoDB 数据类型 MongoDB 插入文档 MongoDB 查询文档 MongoDB 更新文档 MongoDB 删除文档 MongoDB 投影 MongoDB 限制记录 MongoDB 排序文档 MongoDB 索引 MongoDB 聚合

Java正则表达式基础整理

(一)正则表达式及语法简介 String类使用正则表达式的几个方法: 正则表达式支持的合法字符: 特殊字符: 预定义字符: 方括号表达式: 圆括号表达式:用于将多个表达式组成一个子表达式,可以使用或运算符“|”,比如正则表达式:"(aa|bb|cc)"就表示匹配"aa"."bb"."cc"三个字符串中的其中一个. 边界匹配符: 贪婪.勉强.占有模式的数量标识符: (二)Java正则表达式的简单用法 两个关键类:(1)Patte

java学习教程之代码块

学编程吧java学习教程之代码块发布了,欢迎通过xuebiancheng8.com来访问 java中的代码块包括下面几种: 1.普通代码块 2.构造代码块 3.静态代码块 1.普通代码块很简单看下面这个例子: public class Test{ public static void main(String args[]){ { //此处就是普通代码块,普通代码块中的代码按顺序执行 System.out.println("hello"); } } } 2.构造代码块 public cl