编程或者电脑使用过程中,经常需要对字符串进行 匹配,查找,替换,判断。如果单纯用代码 if () ,whlie 什么的进行比较复杂麻烦。正则表达式是一种强大灵活的文本处理工具,专门对字符串进行匹配,查找,替换,判断。

正则表达式的各种匹配符

// 正则表达式的各种匹配符

^              从行的开始位置开始匹配
$ 匹配到行的结束位置
\b 匹配单词的开始或结束位置 . 匹配除换行符的所有任意字符
\w 匹配单字(a-z,A-Z,0-9,下划线)
\W 匹配非单字字符
\s 匹配空白字符
\S 匹配非空白字符
\d 匹配数字字符(0-9)
\D 匹配非数字字符 * 匹配前面表达式零次或多次,等价于 {0,}
+ 匹配前面表达式一次或多次,等价于 {1,}
? 匹配前面表达式零次或一次,等价于{0,1}
{n} 匹配前面的表达式n次,n是一个非负整数
{n,} 匹配前面的表达式至少n次,n是一个非负整数
{n,m} 匹配前面的表达式 n-m 次, nm都是非负整数 [] 字符类,如[123]表示有123中任意一个数字,[1-9]表示1到9中任意一个数字
() 分组,匹配括号里的整体,(java)+ 就是匹配一个"java"至少出现一次的字符串
^ 反义匹配,用在判断条件前。 例如 .*[^\d]\.java$ 就是匹配最后一位非数字的java文件
| 逻辑或
\ 转义字符,和编程语言里的一样

了解了这些匹配符,就可以开始写匹配式,很多网站提交信息的时候说填写的什么信息不规范就是正则匹配式进行判断。

手机号码验证:国内手机都是13,15,18开头的11位数字,据此来进行匹配验证

匹配式:    \b1[358]\d{9}\b    开头与结尾写\b,号码开始是1,第二位是3、5、8中的一个数字,剩下九位是数字


boolean check = false;
String regex = "\b1[358]\d{9}\b";
String input = "19100390888";
Pattern pattern = Pattern.compile(regex) //编译正则表达式
Matcher matcher = pattern.matcher(input) //进行匹配
if (matcher.matches()) check = true;
return check;

身份证验证:前六位地区码(数字),中间八位生日(数字),末尾四位标识码(数字)。生日年开头是19或者2,月01-12,日01-31。

匹配式: ^\d{6}((19)|(2\d)\d{2}((0\d)|(1[012]))(([0-2]\d)|(3[01]))\d{4})$


boolean check = false;
String regex = "^\d{6}((19)|(2\d)\d{2}((0\d)|(1[012]))(([0-2]\d)|(3[01]))\d{4})$";
String input = "19100390888";
Pattern pattern = Pattern.compile(regex) //编译正则表达式
Matcher matcher = pattern.matcher(input) //进行匹配
if (matcher.matches()) check = true;
return check;

邮箱验证:前面任意位数非空字符,必须带@,末尾必须有.com或者.cn

匹配式: \w+@\w+\.(com)|(cn)

boolean check = false;
String regex = "\w+@\w+\.(com)|(cn)";
String input = "19100390888";
Pattern pattern = Pattern.compile(regex) //编译正则表达式
Matcher matcher = pattern.matcher(input) //进行匹配
if (matcher.matches()) check = true;
return check;

/*

******逸雨清风 出品

******http://blog.csdn.net/xyydyyqf

******2013.6.23

*/

正则表达式概述与JAVA中正则表达式的应用的更多相关文章

  1. java中正则表达式基本用法

    正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为 ...

  2. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  3. Java中正则表达式去除html标签

    Java中正则表达式去除html的标签,主要目的更精确的显示内容,比如前一段时间在做类似于博客中发布文章功能,当编辑器中输入内容后会将样式标签也传入后台并且保存数据库,但是在显示摘要的时候,比如显示正 ...

  4. 1000行代码徒手写正则表达式引擎【1】--JAVA中正则表达式的使用

    简介: 本文是系列博客的第一篇,主要讲解和分析正则表达式规则以及JAVA中原生正则表达式引擎的使用.在后续的文章中会涉及基于NFA的正则表达式引擎内部的工作原理,并在此基础上用1000行左右的JAVA ...

  5. JAVA中正则表达式常用的四个方法

    JAVA中正则表达式处理字符串的四个常用方法:匹配.分割.替换.截取.其跟字符串的常用函数相似,但是使用正则表达式会更简单.更加简洁.下面是具体的例子: public class TestRegex ...

  6. java中正则表达式基本用法(转)

    https://www.cnblogs.com/xhj123/p/6032683.html 正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符( ...

  7. JAVA中正则表达式学习总结

    一.JAVA中正则表达式相关的类 1. java.util.regex.Pattern 该类用于编译模式,模式可以理解为一个正则表达式,比如:a*b. 用法如下: // 创建模式 Pattern p ...

  8. Java中正则表达式的使用(常用的方法)

    这两天回想了一下正则表达式的使用,顺便就总结了一下java的javascript中使用正则表达式的用法,需要看javascript中使用正则的朋友可以看我的另一篇总结,下面我就简单的介绍一下java中 ...

  9. Java中正则表达式、模式匹配与信息抽取

    引言 记得几年前在做网页爬虫后的信息抽取时,针对网页源码中隐藏的要提取的信息,比如评论.用户信息等属性信息,直接利用HtmlParser得到.如此做倒是简单,不过利用的是网页的规范的tag标记.其实j ...

随机推荐

  1. CKEditor和CKFinder整合实现上传下载功能

    CKEditor与CKFinder整合并实现文件上传功能 事先说明:此整合的是java版本号的, 用到的有:jsp + ckeditor + ckfinder (没有servlet 及其他框架技术) ...

  2. 【Eclipse】修改项目访问名称

    Properties --> Web Project Settings --> Context root --> 输入想要用的名称(默认是项目名)

  3. 修改linux多系统启动顺序

    Ubuntu和XP双系统grub2默认启动项设置为XP 装了双系统后,在开机时总会有想让一个系统默认启动的时候,一般安装完Ubuntu和XP双系统后,开机时默认的是启动Ubuntu系统,但是当想让XP ...

  4. ORACLE存储过程笔记1

    ORACLE存储过程笔记1 一.基本语法(以及与informix的比较)   create [or replace] procedure procedure_name (varible {IN|OUT ...

  5. 如何用vs查看结构体布局

    今天遇到一个问题: 假设在每个系统的structA 结构不同,我们在windbg看了以后直接拿来用,自己定义成结构体,如何来验证这个结构体内存布局是否和windbg一致. 当然笨办法是自己一个个成员数 ...

  6. ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解

    原文 ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 ...

  7. 转:CSS选择器笔记

    作者: 阮一峰 日期: 2009年3月12日 去年我学jQuery的时候,曾经做过一点选择器(selector)的笔记. 这几天拿出来看了一下,发现很多都忘记了.所以,我决定把它们贴在这里,方便以后查 ...

  8. 设计模式(十)享元模式Flyweight(结构型)

    设计模式(十)享元模式Flyweight(结构型) 说明: 相对于其它模式,Flyweight模式在PHP实现似乎没有太大的意义,因为PHP的生命周期就在一个请求,请求执行完了,php占用的资源都被释 ...

  9. 响应式设计:理解设备像素,CSS像素和屏幕分辨率

    概述 屏幕分辨率.设备像素和CSS像素这些术语,在非常多语境下,是可互换的,但也因此easy在有差异的地方引起混淆,实际上它们是不同的概念. 屏幕分辨率和设备像素是物理概念,而CSS像素是WEB编程的 ...

  10. C# ignoring letter case for if statement(Stackoverflow)

    Question: I have this if statement: if (input == 'day') Console.Write({0}, dayData); When the user t ...