正则表达式——快速学习及常用整理

来源:互联网 发布:中国环保网络电视台 编辑:程序博客网 时间:2024/05/16 17:36

正则表达式对于数据挖掘和匹配选择的重要性不容置疑,特此整理,让新手快速入门。

主要参考一下两个链接,感谢!

http://www.jb51.net/tools/zhengze.html    正则表达式30分钟入门教程

https://msdn.microsoft.com/zh-cn/library/az24scfc.aspx  正则表达式语言 - 快速参考

http://tool.oschina.net/regex# 正则表达式测试工具


正则表达式的用处:匹配检测;校验;

对字符类应用限定符,限定符既可以用在单个字符,也可以用在字符类,

  因为方括号用于表示字符类, 所以要匹配方括号本身,要加转义字符 \[

一、限定符

 ?表示相关的模式出现零次或一次

 *表示相关的模式出现零次或多次

  +表示相关的模式出现一次或多次   

 {n} 表示相关的模式出现n次

  {n,m} 表示相关的模式出现n到m次

 {n,}表示相关的模式至少出现n,最多至无限多次

二、元字符

1表示字符类 

句点元字符.  匹配任意字符

\d匹配0~9任意一个数字

\D匹配\d不匹配的其他字符

\w只匹配英文字母、数字和下划线

\W匹配\w元字符不匹配的字符

\s匹配任何单个的空白字符,如一个空格符、一个制表符和一个换行符

\S匹配任何非空白字符

\t匹配一个制表符

\n匹配一个换行符

\为转义字符\\匹配一个反斜杠字符

 2表示位置

元字符会直接匹配位于一行或者一个字符串开始之后的目标字符,表示一行或一个字符串的开始

指定出现在一行结束或一个字符串结束位置之前的字符序列,表示一行或一个字符串的结束

\<用于识别位于一个词开始位置的词边界

\>表示位于一个字母字符序列结尾处的词边界

\b元字符既可以用于匹配位于词开始处的词边界也可以用于匹配词结尾处的词边界

三、在字符类中使用范围

1字母字符范围

[a-z]

[A-Z]

慎用[A-z]    有可能中间有其他字符

2字符类的数字范围

[0-9]

3十六进制数字

[0-9a-fA-F]

4潜在的范围陷阱

[.-/]意外指定了一个包含句点和正斜杠字符的范围

[-./] 连字符作为第一个字符,就不会出现这种情况

5圆括号有什么用

  正则表达式中的圆括号有两种功能:一是表示分组;二是表示可选择性。

常用正则表达式:

匹配中文字符的正则表达式:[\u4e00-\u9fa5]

评注:匹配任意的中文字符

匹配双字节字符(包括汉字在内):[\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(\S*?)[>]*>.*?</\1>|<.*? />
评注:上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配HTML标签正则表达式:<[^>]+>?[^<]*>

评注:这个也只能匹配部分,还需要调整

匹配首尾空白字符的正则表达式:\s*|\s*
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[\s]*
评注:上面这个基本可以满足需求,可以根据需求调整修改

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):[a-zA-Z][a-zA-Z0-9_]{4,15}
评注:表单验证时很实用

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字

匹配身份证:\d{15}|\d{18}
评注:中国的身份证为15位或18位

匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用

匹配特定数字:
[1-9]\d*
    //匹配正整数
-[1-9]\d*   //匹配负整数
-?[1-9]\d*   //匹配整数
[1-9]\d*|0  //匹配非负整数(正整数 + 0)
-[1-9]\d*|0   //匹配非正整数(负整数 + 0)
[1-9]\d*\.\d*|0\.\d*[1-9]\d*   //匹配正浮点数
-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)  //匹配负浮点数
-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)  //匹配浮点数
[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0   //匹配非负浮点数(正浮点数 + 0)
(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
[A-Za-z]+
  //匹配由26个英文字母组成的字符串
[A-Z]+  //匹配由26个英文字母的大写组成的字符串
[a-z]+  //匹配由26个英文字母的小写组成的字符串
[A-Za-z0-9]+  //匹配由数字和26个英文字母组成的字符串
\w+  //匹配由数字、26个英文字母或者下划线组成的字符串

匹配校验常用正则验证规则40条

decmal:”^([+-]?)\\d*\\.\\d+$”, //浮点数
decmal1:”^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$”, //正浮点数
decmal2:”^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$”, //负浮点数
decmal3:”^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$”, //浮点数
decmal4:”^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$”, //非负浮点数(正浮点数 + 0)
decmal5:”^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$”, //非正浮点数(负浮点数 + 0)
intege:”^-?[1-9]\\d*$”, //整数
intege1:”^[1-9]\\d*$”, //正整数
intege2:”^-[1-9]\\d*$”, //负整数
num:”^([+-]?)\\d*\\.?\\d+$”, //数字
num1:”^[1-9]\\d*|0$”, //正数(正整数 + 0)
num2:”^-[1-9]\\d*|0$”, //负数(负整数 + 0)
ascii:”^[\\x00-\\xFF]+$”, //仅ACSII字符
chinese:”^[\\u4e00-\\u9fa5]+$”,//仅中文
color:”^[a-fA-F0-9]{6}$”, //颜色
date:”^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$”, //日期
email:”^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$”, //邮件
idcard:”^[1-9]([0-9]{14}|[0-9]{17})$”, //身份证
ip4:”^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$”, //ip地址
letter:”^[A-Za-z]+$”, //字母
letter_l:”^[a-z]+$”, //小写字母
letter_u:”^[A-Z]+$”, //大写字母
mobile:”^0?(13|15|18)[0-9]{9}$”,//手机
mobile2:”^(1[3458])[0-9]{9}|((\+852|00852)[9|8|6|5])[0-9]{7}$” //支持香港手机号
tel1:”^(0[0-9]{2,3}\\-)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$” //固定电话
tel2:”^((0[0-9]{2,3}\-)?[2-9][0-9]{6,7}|((00852|\+852)\-)?([2-3][0-9]{7}))+(\-[0-9]{1,4})?$” //固定电话(支持香港固话)
notempty:”^\\S+$”, //非空
password:”^.*[A-Za-z0-9\\w_-]+.*$”, //密码
fullNumber:”^[0-9]+$”, //数字
picture:”(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$”, //图片
qq:”^[1-9]*[1-9][0-9]*$”, //QQ号码
rar:”(.*)\\.(rar|zip|7zip|tgz)$”, //压缩文件
tel:”^[0-9\-()()]{7,18}$”, //电话号码的函数(包括验证国内区号,国际区号,分机号)
url:”^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$”, //url
username:”^[A-Za-z0-9_\\-\\u4e00-\\u9fa5]+$”, //用户名
deptname:”^[A-Za-z0-9_()()\\-\\u4e00-\\u9fa5]+$”, //单位名
zipcode:”^\\d{6}$”, //邮编
realname:”^[A-Za-z\\u4e00-\\u9fa5]+$”, // 真实姓名
companyname:”^[A-Za-z0-9_()()\\-\\u4e00-\\u9fa5]+$”,
companyaddr:”^[A-Za-z0-9_()()\\#\\-\\u4e00-\\u9fa5]+$”,
companysite:”^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&#=]*)?$”

常见正则表达式符号:



0 0