编程或者电脑使用过程中,经常需要对字符串进行 匹配,查找,替换,判断。如果单纯用代码 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. levelDB跳表实现

    跳表的原理就是利用随机性建立索引,加速搜索,并且简化代码实现难度.具体的跳表原理不再赘述,主要是看了levelDB有一些实现细节的东西,凸显自己写的实现不足之处. 去除冗余的key template& ...

  2. 在主函数中提示用户输入用户名和密码。另写一方法来判断用户输入是否正确。该方法分别返回一个bool类型的登录结果和和一个string类型的登录信息。如登录成功,返回true及“登录成功”,若登录失败则返回false及“用户名错误”或“密码错误”(使用out参数)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. Hibernate 笔记1

    Hibernate表generator标签的作用,如下图,

  4. Oracle AWR 报告详解

    转自:http://blog.csdn.net/laoshangxyc/article/details/8615187 持续更新中... Oracle awr报告详解 DB Name DB Id In ...

  5. POJ 1861 Network (模版kruskal算法)

    Network Time Limit: 1000MS Memory Limit: 30000K Total Submissions: Accepted: Special Judge Descripti ...

  6. Derby的下载安装和使用,(和JAVA中使用Derby)

    首先是Java环境变量要配置: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Fil ...

  7. Coursera Machine Learning 学习笔记(十二)

    - Normal equation 到眼下为止,线性回归问题中都在使用梯度下降算法,但对于某些线性回归问题,正规方程方法是更好的解决方式. 正规方程就是通过求解例如以下方程来解析的找出使得代价函数最小 ...

  8. [置顶] JNI之java传递数据给c语言

    1.首先创建 DataProvider类: package com.pl.ndkpassdata; public class DataProvider { static{ System.loadLib ...

  9. C语言顺序栈实现

    /*数序栈*/ #include<stdio.h> #include<stdlib.h> #include<math.h> #define SElemType ch ...

  10. Qt学习之路(49): 通用算法

    今天开始的部分是关于Qt提供的一些通用算法.这部分内容来自C++ GUI Programming with Qt 4, 2nd Edition.   <QtAlgorithms>提供了一系 ...