饥人谷技术博客

正则表达式总结

2015-12-27  本文已影响0人  饥人谷_王欢

元字符

.   匹配除换行符以外的任意字符

\w 匹配字母数字下划线或者中文

\d 匹配数字

\s 匹配空白

\b 匹配开始或者结束

^ 匹配字符串的开始

$ 匹配字符串的结束

常用的限定符

* 重复零次或更多次

+ 重复一次或更多次

? 重复零次或一次

{n} 重复n次

{n,} 重复n次或更多次

{n,m} 重复n到m次

常用的反义代码

\W匹配任意不是字母,数字,下划线,汉字的字符

\S匹配任意不是空白符的字符

\D匹配任意非数字的字符

\B匹配不是单词开头或结束的位置

[^x]匹配除了x以外的任意字符

[^aeiou]匹配除了aeiou这几个字母以外的任意字符

常用分组语法

捕获

(exp)匹配exp,并捕获文本到自动命名的组里

(?exp)匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)

(?:exp)匹配exp,不捕获匹配的文本,也不给此分组分配组号

零宽断言

(?=exp)匹配exp前面的位置

(?<=exp)匹配exp后面的位置

(?!exp)匹配后面跟的不是exp的位置

(?<!exp)匹配前面不是exp的位置

注释

(?#comment)这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

懒惰限定符

*?重复任意次,但尽可能少重复

+?重复1次或更多次,但尽可能少重复

??重复0次或1次,但尽可能少重复

{n,m}?重复n到m次,但尽可能少重复

{n,}?重复n次以上,但尽可能少重复

常用正则表达式总结

中文字符  [\u4e00-\u9fa5]

QQ号 ^[1-9]\d{4,9}$

手机号 ^1[345789]\d{9}$

email  ^.+@.+$

          \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

身份证号 

1、15位  (1)1~6位为地区代码

               (2)7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期

               (3)第13~15位为顺序号

^[1-9]\d{7}(0\d|1[0-2])([012]\d|3[01])\d{3}$

2、18位

1-2位省、自治区、直辖市代码;3-4位地级市、盟、自治州代码;5-6位县、县级市、区代码;7-14位出生年月日,比如19670401代表1967年4月1日;15-17位为顺序号,其中17位(倒数第二位)男为单数,女为双数 18位为校验码,0-9和X。

^[1-9]\d{5}[1-2]\d{3}(0\d|1[0-2])([012]\d|3[01])\d{3}(\d|[Xx])$

URL网址 [a-zA-z]+://[^\s]*

IP地址 (2[0-4]\d|25[0-5]|\[01]?\d?\d?\.){3}(2[0-4]\d|25[0-5]|\[01]?\d?\d?)

匹配特定数字:

^[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个英文字母或者下划线组成的字符串

上一篇下一篇

猜你喜欢

热点阅读