Java开发知识之Java的正则表达式
正则表达式
一丶什么是正则表达式
1.正则表达式简介
正则表达式就是针对字符串处理,所处的一种规范.比如我们都有在论坛上注册信息的时候.
论坛让我们输入我们的QQ 或者手机号才能注册.但是你随便输入.这就造成了论坛后台数据库保存了各种杂乱无章的数据.所以必须规范一下.比如你手机号输入错误了.提示你输入错误.
2.无正则表达式判断代码
传统的形式:
Java Code为例
public static void main(String[] args) throws Exception {
String str = "1842a535234"; //随便给一个手机号,表示我们论坛注册时填写的手机号.
//手机号都是11位,判断手机号.
boolean result = false;
if(str == null && str.length() < 11)
System.out.println("手机号是错误的");
//继续判断是否手机号中有随便输入的值
for(int i =0; i < str.length();i++) {
char ch = str.charAt(i);
result = Character.isDigit(ch);//判断是否是数字
if(result == false) {
System.out.println("错误的电话号码");
break;
}
}
}
输出结果必然是错误的电话号码
但是我们这样写只是简单的判断了一下.实际应用中判断的更多.那该怎么办.
这时候就提出了一种规则.只要你按照规则.去判断你输入的值.是否是正确还是错误.
3.使用正则表达式代码.
代码如下:
public static void main(String[] args) throws Exception {
String str = "18421535234"; //随便给一个手机号,表示我们论坛注册时填写的手机号.
boolean b = str.matches("[0-9]{11}");// 说明了这个字符串是否是0-9之间组成的数字,并且有11位.
System.out.println("电话号码是: " + b);
}
调用String类中的matches()方法.传入正则表达式的规则.他就会给你判断.
输出结果就是true.一行代码,解决了我们所有的烦恼.
内部实现
public boolean matches(String regex) {
return Pattern.matches(regex, this);
}
可以看到,调用了Pattern类的matches方法.
继续跟踪
public static boolean matches(String regex, CharSequence input) {
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
return m.matches();
}
可以看到操作正则表达式一个是 pattern 一个是 Matcher
所以下面重点讲解
二丶正则表达式API
- 1.正则表达式是一种规则.是针对字符串的. 其它语言一样都有.
- 2.正则表达式实在 java.util.regex包中
- 3.包中有上面两个实现类 Pattern(模式) Matcher(匹配器)
- 4.匹配语法错误会有异常 PatternSyntaxException
java中就使用 Pattern 跟 Matcher判断正则表达式的.也就是上面跟踪的代码.
1.使用Api进行正则表达式匹配.
代码例子
public static void main(String[] args) throws Exception {
boolean isPhoneNumber = checkPhoneNumber("[0-9]{11}","18555555555");
System.out.println("电话号号码是: " + isPhoneNumber);
}
static boolean checkPhoneNumber(String rex,String Value) {
Pattern p = Pattern.compile(rex);
Matcher m = p.matcher(Value);
return m.matches();
}
直接使用上面我们底层API即可.
Pattern中最重要的方法就是compile(),我们必须传入正则表达式才可以.
而下面的匹配器则是API有很多.比如查找.等等.
三丶正则表达式语法格式
1.正则表达式语法
正则表达式最重要的就是正则表达式语法了.
不一一
编写了.给出截图
Java开发知识之Java的正则表达式的更多相关文章
- Java开发知识之Java字符串类
Java开发知识之Java字符串类 一丶简介 任何语言中.字符串都是很重要的.都涉及到字符串的处理. 例如C++中. 字符串使用内存. 并提供相应的函数进行处理 strcmp strcat strcp ...
- Java开发知识之Java中的Map结构
Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...
- Java开发知识之Java中的集合Set接口以及子类应用
---恢复内容开始--- Java开发知识之Java中的集合Set接口以及子类应用 一丶Set接口以及作用 在上一讲.我们熟悉了接口的实现图.以及自己各有的子类. List接口主要存储的数据是可以重复 ...
- Java开发知识之Java中的集合上List接口以及子类讲解.
Java开发知识之Java中的集合类 一丶什么是集合类 如果你学习说数据结构,那么学习集合就很简单. 因为集合就是存储数据的结构. 例如 有链表结构 (list ) 还有 map结构.等等. 集合类就 ...
- Java开发知识之Java中的泛型
Java开发知识之Java中的泛型 一丶简介什么是泛型. 泛型就是指泛指任何数据类型. 就是把数据类型用泛型替代了. 这样是可以的. 二丶Java中的泛型 Java中,所有类的父类都是Object类. ...
- Java开发知识之Java的枚举
Java开发知识之Java的枚举 一丶什么是枚举 枚举可以理解为就是常量,在Java中我们定义常量.都是用 final语句. C++中都是用const关键字. 枚举跟C++概念都是一样的.就是特定的常 ...
- Java开发知识之Java的异常处理
Java开发知识之Java的异常处理 一丶异常概述 在讲解异常之前,我们要搞清楚.什么是异常. 通俗理解就是我们编写的程序出问题了.进行处理的一种手段. 比如我们的QQ.有的时候就崩溃了.比如出现xx ...
- Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字
Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字 一丶Java中包的机制 首先包其实就是个文件夹.作用就是管理类. Java中每次定义一个类的时候.通过Java编译之后.都会生 ...
- Java开发知识之Java的继承多态跟接口*
Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
- Java开发知识之Java的数字处理类Math类
Java开发知识之Java的数字处理类Math类 一丶Java.text.DecimalFormat类与NumberFormat类 首先 Java.text.DecimalFormat指的是Decim ...
随机推荐
- BZOJ 4804
辣鸡题目毁我青春 易推 \[\sum_{i=1}^n\sum_{i=1}^m \varphi(gcd(i,j))=\sum_{T}\frac{n}{T}\dfrac{m}{T}\sum_{d|T} \ ...
- Vue 记录 Cannot read property '_withTask' of undefined
第二次遇到,年前偶尔代码中频繁出现过,因为没影响到交互,赶工期中,没有去深究. 今天又遇到了, 在事件触发后,脚本报错,终止了界面交互. 最后查找到这里的原因,检查并移除无效业务事件,错误消失了. ( ...
- Makefile = ?= := 区别 $@,$^,$<
= 是最基本的赋值:= 是覆盖之前的值?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值 1.“=” make会将整个makefile展开后,再决定变量的值.也就是说,变量的值将会是整 ...
- 详谈kafka的深入浅出
第一:kafka的介绍,kafka官网:http://kafka.apache.org/ http://www.jasongj.com/2015/03/10/KafkaColumn1/ kafka的简 ...
- SpringSecurity实现权限管理和页面导航栏动态实现
用户模块. 3 1.1 需求:获取用户名. 3 1.1.1 分析. 3 1.1.2 服务端获取用户信息. 4 1.1.3 页面获取用户信息. 5 1.2 给用户分配角色. ...
- java学习之路--零碎的知识笔记
java运算符: 自增自减运算符: int b = ++a; 拆分运算过程为: a=a+1=4; b=a=4, 最后结果为b=4,a=4 前缀自增自减法(++a,--a): 先进行自增或者自减运算,再 ...
- ubuntu 修改系统时间无效
用root用户修改服务器时间无效:使用hwclock -w也不行 解决方法: 需要取消自动从互联网同步时间才可以的 timedatectl set-ntp 0 上面的命令可以关闭自动同步,然后你再设置 ...
- Data Center手册(3): Load Balancer
Load Balancer的类型 DNS Round-Robin 这是一种很常见的分流的方式,具体配置如下: name server有一个zone文件,对于同一个domain,有多个IP www.ex ...
- CoreProfiler升级到.NetStandard 2.0
致所有感兴趣的朋友: CoreProfiler和相应的Sample项目cross-app-profiling-demo都已经升级到.NetStandrard 2.0和.NetCore 2.0. 有任何 ...
- Trie 简介
一.Trie简介 在计算机科学中,Trie,又称字典树.前缀树.单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎 ...