廖雪峰Java9正则表达式-1正则表达式入门-1正则表达式简介
1.使用代码来判断字符串
场景:
- 判断字符串是否是有效的电话号码:"010-12345678", "123ABC456"
- 判断字符串是否是有效的电子邮箱地址:"test@example.com", "test#example"
- 判断字符串是否是有效的时间:"12:34", "99:99"
通过程序判断需要为每种判断创建规则,然后用代码实现:
示例1:判断手机号
Phone.java
package com.testList;
public class Phone{
public boolean isVaildMobile(String s){
if (s.length() != 11){
return false;
}
for(int i=0;i<s.length();i++){
char c = s.charAt(i);
if ( c<'0' || c > '9'){
return false;
}
}
return true;
}
}
PhoneTest.java
package com.testList;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class PhoneTest {
Phone phone;
@Before
public void setUp(){
phone = new Phone();
}
@Test
public void isVaildMobile() {
System.out.println(phone.isVaildMobile("13311112222"));
}
@After
public void tearDown(){
phone = null;
}
}
2.正则表达式的优势
如果用代码来实现各种判断,就要为每种判断创建规则,如判断邮箱、日期、时间,会相当麻烦。
正则表达式可以用字符串来描述规则,并用来匹配字符串。如上例中手机号的校验
package com.testList;
public class Phone{
public boolean isVaildMobile(String s){
String rule = "\\d{11}";
return s.matches(rule);
}
}
使用正则表达式的好处:
- 一个正则表达式就是一个描述规则的字符串
- 只需要编写正确的规则,就可以让正则表达式引擎去判断目标字符串是否符合规则
- 正则表达式是一套标准,可以用于任何语言
- JDK内置正则表达式引擎:java.util.regex
Phone.java
package com.testList;
public class Phone{
public static boolean isCentury20th(String s){
if(s == null){
return false;
}
String rule = "19\\d\\d";
return s.matches(rule);
}
}
PhoneTest.java
package com.testList;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class PhoneTest {
@Test
public void testIsCentury20th(){
assertTrue(Phone.isCentury20th("1900"));
assertTrue(Phone.isCentury20th("1901"));
assertTrue(Phone.isCentury20th("1922"));
assertTrue(Phone.isCentury20th("1948"));
assertTrue(Phone.isCentury20th("1901"));
assertTrue(Phone.isCentury20th("1999"));
assertFalse(Phone.isCentury20th(null));
assertFalse(Phone.isCentury20th(""));
assertFalse(Phone.isCentury20th(" "));
assertFalse(Phone.isCentury20th("19"));
assertFalse(Phone.isCentury20th("190"));
assertFalse(Phone.isCentury20th("190A"));
assertFalse(Phone.isCentury20th("19001"));
assertFalse(Phone.isCentury20th("1900s"));
assertFalse(Phone.isCentury20th("2900"));
assertFalse(Phone.isCentury20th("A900"));
}
}
3.总结:
正则表达式是一个字符串
正则表达式用字符串描述一个匹配规则
使用正则表达式可以快速判断给定的字符串是否符合匹配规则
Java内建正则表达式java.util.regex
廖雪峰Java9正则表达式-1正则表达式入门-1正则表达式简介的更多相关文章
- 廖雪峰Java9正则表达式-1正则表达式入门-2正则表达式匹配规则
正则表达式的匹配规则: 从左到右按规则匹配 匹配规则及示例 可以匹配 不能匹配 "abc" "abc" 不能匹配:"ab", "A ...
- 廖雪峰Java9正则表达式-2正则表达式进阶-3分组匹配
1.使用括号可以提取字符串 不加括号匹配电话号码 匹配成功后,如何提取想要的字符串? 使用(...)可以分组:"^(\d{3,4})\-(\d{6,8})$" 2.String.m ...
- 廖雪峰Java9正则表达式-2正则表达式进阶-6搜索和替换
1.使用正则表达式分割字符串: String[] string.split(String regex); "a b c".split("\\s");->[ ...
- 廖雪峰Java9正则表达式-2正则表达式进阶-5非贪婪匹配
1.贪婪匹配 问题:给定一个字符串表示的数字,判断该数字末尾0的个数? "123000": 3个0 "10100": 2个0 "1001": ...
- 廖雪峰Java15JDBC编程-1关系数据库基础-1关系数据库简介
1.数据库 1.1 定义 数据库是按照数据结构来组合.存储和管理数据的软件. 1.2 数据库模型 数据库有层次模型.网状模型.关系模型三种模型. 2 关系数据库 关系数据库是建立在关系模型上的数据库, ...
- 爬取廖雪峰的python3教程
从廖雪峰老师的python教程入门的,最近在看python爬虫,入手了一下 代码比较low,没有用到多线程和ip代理池 然后呢,由于robots.txt的限定,构建了一些user-agent,并放慢的 ...
- [.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门
[.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门 1. 什么是正则表达式? 1.1 正则表达式概念 正则表达式,又称正则表示法,英文名:Regular Expression(简 ...
- 正则表达式30分钟入门教程<转载>
来园子之前写的一篇正则表达式教程,部分翻译自codeproject的The 30 Minute Regex Tutorial. 由于评论里有过长的URL,所以本页排版比较混乱,推荐你到原处查看,看完了 ...
- python3爬虫之入门和正则表达式
前面的python3入门系列基本上也对python入了门,从这章起就开始介绍下python的爬虫教程,拿出来给大家分享:爬虫说的简单,就是去抓取网路的数据进行分析处理:这章主要入门,了解几个爬虫的小测 ...
随机推荐
- leetcode 第4题 Median of Two Sorted Arrays
class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int&g ...
- 王者荣耀交流协会互评Beta版本--爱阅app
测评人:任思佳 爱阅APP软件说明书地址:http://www.cnblogs.com/szjzsd/p/7881686.html 1.根据NABCD评论作品的选题: N(Need):相比α发布来 ...
- awk统计文本里某一列重复出现的次数
比如这样的场景:现在有一个文本,里面是这样的内容: NOTICE: 12-14 15:11:13: parser. * 6685 url=[http://club.pchome.net/threa ...
- css内外边距属性
盒子模型: 所有HTML元素可以看作盒子,在CSS中,"box model"是用来设计和布局时 使用. CSS盒模型本质上是一个盒子, 封装周围的HTML元素, 它包括:边距,边框 ...
- 卷积神经网络特征图可视化(自定义网络和VGG网络)
借助Keras和Opencv实现的神经网络中间层特征图的可视化功能,方便我们研究CNN这个黑盒子里到发生了什么. 自定义网络特征可视化 代码: # coding: utf-8 from keras.m ...
- java效验只能为数字类型
首先要import java.util.regex.Pattern 和 java.util.regex.Matcher /** * 利用正则表达式判断字符串是否是数字 * @param str * @ ...
- 实验九 ZStack 广播通信实验
实验九 ZStack 广播通信实验[实验目的]1. 了解 ZigBee 广播通信的原理2. 掌握在 ZigBee 网络中进行广播通信的方法[实验设备]1. 装有 IAR 开发工具的 PC 机一台2. ...
- Struts2 2.5版本的通配符和动态方法调用的问题
Struts2.5版本之后,使用通配符的时候出现错误 配置的四个action,使用通配符和动态方法的时候找不到其中的update方法后来经过查找才知道原来是版本加了一个 <action name ...
- 我的代码-test models
# coding: utf-8 # In[2]: import pandas as pdimport numpy as npfrom sklearn.preprocessing import bina ...
- MyEclipse2017创建Spring项目
1.创建一个Web Project 2.右击项目-->Properties 3.搜索Spring -->Peoject Facets-->在右边找到Spring,打勾并保存 4.测试 ...