常用的正则表达式

正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。

记住正则语法最好的办法就是记住这三样东西:Bracket(括号), caret(插入符号)和Dollars(美元符号)。

B:在正则表达式中有3种类型的括号:方括号 “[“和花括号“{“ 。

方括号"["内是需要匹配的字符,花括号"{"内是指定匹配字符的数量。圆括号“(“ 则是用来分组的。

C:插入符号 “^” 表示正则式的开始。

D:美元符号“$” 表示正则式的结束。


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

匹配双字节字符(包括汉字在内):[^\x00-\xff]

匹配空白行的正则表达式:\n\s*\r

匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?|<.*? />

匹配首尾空白字符的正则表达式:^\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}

匹配腾讯QQ号:[1-9][0-9]{4,}

匹配中国邮政编码:[1-9]\d{5}(?!\d)

匹配身份证:\d{15}|\d{18}

匹配ip地址:\d+\.\d+\.\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个英文字母或者下划线组成的字符串

========================================================================================

验证数字:^[0-9]*$
验证n位的数字:^\d{n}$
验证至少n位数字:^\d{n,}$
验证m-n位的数字:^\d{m,n}$
验证零和非零开头的数字:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:^\+?[1-9][0-9]*$
验证非零的负整数:^\-[1-9][0-9]*$
验证非负整数(正整数 + 0) ^\d+$
验证非正整数(负整数 + 0) ^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:^[\u4e00-\u9fa5],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。
整数:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数 ^(-?\d+)(\.\d+)?$

 

====================================================================================

字符串处理

表达式: ^\d{3}-\d{2}-\d{4}$
描述:此正则表达式将会匹配设备号码(美国)(SSN) ,格式为NNN-NN-NNNN.匹配举例:333-22-4444 | 123-45-6789不匹配举例: 123456789 | SSN
 
表达式: ^[a-zA-Z]$
描述: 匹配任何单一的大写或小写字母。匹配举例: a | B | c不匹配举例: 0 | & | AbC
 
表达式:(\w+)\s+\1
描述: 此表达式使用反向引用来寻找以空格分开的两个单词中出现一行中出现两次的单词。匹配像 'mandate dated'这样的。匹配举例:hubba hubba | mandate dated | an annual不匹配举例: may day | gogo | 1212
 
表达式: ^(\d{4}[- ]){3}\d{4}|\d{16}$
描述:信用卡卡号校验。检查16位四组格式的,以空个或-分开的卡号,或者连在一起的。.
匹配举例:1234-1234-1234-1234 | 1234 1234 1234 1234 | 1234123412341234
不匹配举例: Visa | 1234 | 123-1234-12345
 
表达式:^((4\d{3})|(5[1-5]\d{2})|(6011))-?\d{4}-?\d{4}-?\d{4}|3[4,7]\d{13}$
描述:匹配主要的信用卡如: Visa (长16, 以 4开头), Mastercard (长 16, 以 51-55), Discover (长 16, 以 6011开头), American Express (长 15, 以 34 或 37开头). 所有的以 16 位数字格式,可以有或没有(-)在四个一组的数字中间。
匹配:6011-1111-1111-1111 | 5423-1111-1111-1111 | 341111111111111
不匹配: 4111-111-111-111 | 3411-1111-1111-111 | Visa
 
表达式: ^\s*[a-zA-Z,\s]+\s*$
描述:任何大写或小写字母组成,以逗号或空格分开的文本,空格的数量不限。
匹配:Smith, Ed | Ed Smith | aBcDeFgH
不匹配: a123 | AB5 | Mr. Ed
 
表达式: ^\d{9}[\d|X]$
描述:一个简单的ISBN 校验表达式 –它仅仅校验10位数字构成的,最后一位或许为X的ISBN号。
匹配:1234123412 | 123412341X
不匹配:不是一个isbn
 
表达式:(?:4\d{3})|(?:5[1-5]\d{2})|(?:6011)|(?:3[68]\d{2})|(?:30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$
描述:信用卡卡号校验。
匹配:6011567812345678 | 6011 5678 1234 5678 | 6011-5678-1234-5678
不匹配: 1234567890123456
 
表达式: "((\\")|[^"(\\")])+"
描述:匹配以引号引起的字符串,使用斜杠的字符串。
匹配“ "test" | "escape\"quote" | "\""
不匹配: test | "test | "test\"
 
表达式: ^([1-zA-Z0-1@.\s]{1,255})$
描述:通用字符串校验表达式,可以防止用户输入恶意字符代码,允许输入email地址,姓名,地址,密码等等。不允许输入斜杠 *等非法字符。
匹配:email@email.com | My Name | asdf12df
不匹配: ‘,\*&$<> | 1001' string
 
表达式:^([A-Z]{1}[a-z]{1,})$|^([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$|^([A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,}\040[A-Z]{1}[a-z]{1,})$|^$
描述:匹配首字母大写的以空格分开的字符串,也匹配空字符串。
匹配: Sacramento | San Francisco | San Luis Obispo
不匹配: SanFrancisco | SanLuisObispo | San francisco
 
表达式:(^|\s)(00[1-9]|0[1-9]0|0[1-9][1-9]|[1-6]\d{2}|7[0-6]\d|77[0-2])(-?|[\. ])([1-9]0|0[1-9]|[1-9][1-9])\3(\d{3}[1-9]|[1-9]\d{3}|\d[1-9]\d{2}|\d{2}[1-9]\d)($|\s|[;:,!\.\?])
描述: Incorporated other people's examples; removed extraneous parenthesis on 10/7/04. Currently the SSA site says 772 is the highest AREA number generated (http://www.ssa.gov/employer/highgroup.txt). Old expression was: (^|\s)\d{3}(-?|[\. ])\d{2}\2\d{4}($|\s|[;:,!\.\?]). Looks for either the beginning of a line or whitespace before the beginning of the social security number, then either zero or one hyphen OR one of a period or space, then uses the \3 to reference the value returned in the parenthesis that includes the -?|[\. ] (basically says if the first dash, period, or space is there, then the second one is required; and if the first dash, period, or space is not there, then the second one can't be either), and finally looks for the end of a line, whitespace, or punctuation characters after the social security number.
匹配:123-45-6789 | 123 45 6789 | 123456789
不匹配: 12345-67-890123 | 1234-56-7890 | 123-45-78901
 
表达式:<[^>]+>
描述:这个表达式用来查找所有的开闭标记,可很好的用于HTML或XML文档的标记清理。我用来清理HTML中的XML标记。我找出所有的标记,然后删除那些非标准的的标记。
匹配: <html> | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | <
不匹配: Any plain old text | http://www.regexlib.com/Add.aspx | xml>
 
表达式:^[0-9]{1,}(,[0-9]+){0,}$
描述:它可以校验html页面的格式输入(checkbox, optionbox, selectbox)等,尤其是一次输入多个数字值的时候,例如用户一次选择一个或更多的时候!
匹配: 1111 | 47,26,2,1,1111,12 | 25,1245,2122,23232
不匹配: 111, | 1a1,111,1212,23 | 11aa,aaa,asas,asa
 
表达式:^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?$)[^\x00-\x1f\\?*<>:\;|\"/]+$
描述:对保留字符进行检查,如 <> 和 "。
匹配:abc
不匹配: PRN
表达式:^([a-z0-9]+([\-a-z0-9]*[a-z0-9]+)?\.){0,}([a-z0-9]+([\-a-z0-9]*[a-z0-9]+)?){1,63}(\.[a-z0-9]{2,7})+$
描述: [注释:这个域名通过 Macromedia's ColdFusion MX测试.我肯定它工作于其他正则引擎时还需要额外的信息。]在找了一些正则表达式后,我发现没有一个可以完全的可靠的处理子域名或者顶级域名的正则表达式。因此,我写了一个,然后测试它。它不匹配如: -.domain.com, -a.domain.com, -domain.com, domain-.com, 以及在顶级域名前的字符数超过63个的域名。
匹配: a.domain.com, a-a.domain.com, a--a.domain.com, a--defg.com, domain.co.uk.
匹配: 800-med-alert.com | jump.to | archive-3.www.regexlib.com
不匹配: example | a-.domain.com | http://regexlib.com/
 
表达式:^(?![0-9]{6})[0-9a-zA-Z]{6}$
描述:匹配一个六位的密码,并且其中至少含有一个字母。
匹配:123a12 | a12345 | aaaaaa
不匹配:
111111 ========================================================================================数字格式

表达式: 

^\$?(\d{1,3},?(\d{3},?)*\d{3}(\.\d{0,2})?|\d{1,3}(\.\d{0,2})?|\.\d{1,2}?)$

美国货币格式(中国的人民币应该是一样的,改为人民币符号即可了)

匹配:

$1.99 | 1.99 | .99

不匹配:

$10.999 | 100,00.99 | blank

表达式: 

^([1-9]{0,1})([0-9]{1})(\.[0-9])?$

匹配: 

1 | 1.1 | 0.1

不匹配: 

01 | 01.1 | 0.10

表达式:

^(?!\u00a2) #Don't allow cent symbol \p{Sc}? #optional unicode currency symbols (?!0,?\d) #don't allow leading zero if 1 or more unit (\d{1,3} # 1 to 3 digits (\,\d{3})* # if the is a comma it must be followed by 3 digits |(\d+)) # more than 3 digit with no comma separator (\.\d{2})?$ # option cents

匹配:

$1,501.13 | £215 | 4.93

不匹配: 

01.00 | $.00 | ¢50

表达式:

(?!^0*$)(?!^0*\.0*$)^\d{1,5}(\.\d{1,2})?$

校验为5位整数位,两位小数位,且不允许为0

匹配: 

12345.12 | 0.5

不匹配:

123456.12 | 1.234 | .1

表达式: 

^\$?\d+(\.(\d{2}))?$

可以有也可以没有美元符号,分位也可以有,也可以无。

匹配:

$2.43 | 2.02 | $2112

不匹配:

2.1 | $.14 | $2,222.12

表达式:

^\$?\-?([1-9]{1}[0-9]{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\-?\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\(\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)$

金融格式,美元符号可选,正负可选

匹配:

($4,000.00) | -$4000.00 | -$400.00

不匹配:

4,00.000 | abc | $

表达式: 

^\d{0,2}(\.\d{1,2})?$

输入为两位数的整数,小数 

匹配:

99.99 | 99 | .99

不匹配: 

999.999 | 999 | .999

表达式: 

^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$

浮点数的格式可以是科学指数形式 

匹配:

123 | -123.35 | -123.35e-2

不匹配:

abc | 123.32e | 123.32.3

表达式: 

^[+]?\d*$

只能输入数字,不可输入其他字符 

匹配:

0123456789 | 1234 | 1

不匹配:

1.0?& | a1 | 2a-

表达式: 

^\d*[0-9](|.\d*[0-9]|,\d*[0-9])?$

数据格式

匹配:

123456.123456 | 123456,123456 | 123456

不匹配: 

123a.123 | 123a,123 | a

匹配逗号数据格式,单精度数,也匹配空字符串。 

^(\d|,)*\.?\d*$

匹配: 

1,000 | 3,000.05 | 5,000,000

不匹配:

abc | $100,000 | Forty

匹配正的数据,不匹配0或者负值: 

(^\d*\.?\d*[1-9]+\d*$)|(^[1-9]+\d*\.\d*$)

匹配: 

0.050 | 5.0000 | 5000

不匹配:

0 | 0.0 | .0

匹配0-9999999,7位数允许 

^\d{1,7}$

匹配:

1234567 | 9999999 | 1

不匹配: 

12345678 | 9999.99 | -1234

匹配不超过两位小数的浮点数,实数,小数,允许负号 

^[-]?([1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|\.[0-9]{1,2})$

匹配: 

123 | 123.54 | -.54

不匹配: 

123.543 | 0012 | 1,000.12

货币或金融格式,人民币格式

^\$?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$

匹配:

$1,234.50 | $0.70 | .7

不匹配: 

$0,123.50 | $00.5

整数或两位小数 

^\d+(?:\.\d{0,2})?$

匹配:

1 | 1.23 | 1234.45

不匹配: 

a1.34 | 1.23a | a

小数点左边7位,右边9位 

^(?=.*[1-9].*$)\d{0,7}(?:\.\d{0,9})?$

匹配:

1 | 0123456.123456789 | .123456789

不匹配 

.0123456789 | 0.0 | -1

数字,不接受空格 

^\d+$

匹配:

2 | 50 | 0

不匹配 

-15 | 1.2

接受无符号整数,也匹配空字符串 

^\d*$

匹配:

123 | 000 | 43

不匹配 

asbc | -34 | 3.1415

支持-999.99到+999.99,正的或者负的整数或者小数,百分比符号也支持,不允许空字符串,可根据需要调整范围 

^[-+]?[0-9]\d{0,2}(\.\d{1,2})?%?$

匹配: 

12.3 | 123 | -123.45

不匹配 

- | 10.1234 | -1234

  匹配1-100 

^([1-9]|[1-9]\d|100)$

匹配:

1 | 50 | 100

不匹配: 

0 | .5 | 101

实数 

^((\d?)|(([-+]?\d+\.?\d*)|([-+]?\d*\.?\d+))|(([-+]?\d+\.?\d*\,\ ?)*([-+]?\d+\.?\d*))|(([-+]?\d*\.?\d+\,\ ?)*([-+]?\d*\.?\d+))|(([-+]?\d+\.?\d*\,\ ?)*([-+]?\d*\.?\d+))|(([-+]?\d*\.?\d+\,\ ?)*([-+]?\d+\.?\d*)))$

匹配: 

8.0 | 8.0,-.38,+8.9 | 8.0, +8.8, 0.09

不匹配: 

+ | . | a,b, c

值从5位整数,两位小数的格式

(^\d{3,5}\,\d{2}$)|(^\d{3,5}$)

匹配: 

100,00 | 100 | 99999,99

不匹配:

99,99 | 999999 | 1,00

匹配任何有符号整数 

^(\+|-)?\d+$

匹配: 

-34 | 34 | +5

不匹配: 

abc | 3.1415 | -5.3

匹配指定的数据格式 

^(\d{1,3}'(\d{3}')*\d{3}(\.\d{1,3})?|\d{1,3}(\.\d{3})?)$

匹配:

1'235.140 | 1'222'333.120 | 456

不匹配 

1234.500 | 78'45.123 | 123,0012

末尾是以 25, 50, 75, 0 或 00结束的数字 

^\d*\.?((25)|(50)|(5)|(75)|(0)|(00))?$

匹配:

0.25 | .75 | 123.50

不匹配:

.77 | 1.435

接受正的或者负的百分数0-100,接受2为小数。 

^-?[0-9]{0,2}(\.[0-9]{1,2})?$|^-?(100)(\.[0]{1,2})?$

匹配: 

12.34 | 100.00 | -2.1

不匹配:

101.1 | 10.123 | 100.10

匹配实数,+-号可以有可以无,小数点可以有可以无。 

^[-+]?\d+(\.\d+)?$

匹配:

123 | -123.45 | +123.56

不匹配:

123x | .123 | -123.

匹配任何有效的数字字符串 

^[-+]?\d*$

匹配 

123 | -123 | +123

不匹配: 

abc | 3.14159 | -3.14159

匹配浮点数和数字字符串,+-号可选,也匹配空字符串 

^[-+]?\d*\.?\d*$

匹配:

123 | +3.14159 | -3.14159

不匹配:

abc | 3.4.5 | $99.95

数据格式 

^(\d|-)?(\d|,)*\.?\d*$

匹配: 

5,000 | -5,000 | 100.044

不匹配: 

abc | Hundred | 1.3.4

整个整数范围的数,并允许用户在千位输入逗号 

^0$|^[1-9][0-9]*$|^[1-9][0-9]{0,2}(,[0-9]{3})$

匹配: 

1234 | 0 | 12,345

不匹配: 

12,3245 | -1 | 1234.23

任何正负小数,包括空串 

^-?\d*(\.\d+)?$

Description 

匹配:

4.4 | .4 | -.4

不匹配:

. | ... | zero

整数位为5位,小数为3位,不包括0 

(?!^0*$)(?!^0*\.0*$)^\d{1,5}(\.\d{1,3})?$

匹配:

1 | 12345.123 | 0.5

不匹配: 

0 | 0.0 | 123456.1234

匹配任何无符号的浮点数,数字串,也匹配空串 

^\d*\.?\d*$

匹配:

123 | 3.14159 | .234

不匹配:

abc | -3.14159 | 3.4.2

匹配金额输入,或包含逗号 

^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$

匹配: 

$3,023,123.34 | 9,876,453 | 123456.78

不匹配:

4,33,234.34 | $1.234 | abc

包括,号整数串 

^([1-9]{1}[0-9]{0,7})+((,[1-9]{1}[0-9]{0,7}){0,1})+$

匹配: 

1,2,3455,12345678 | 23045,34678,2892 | 1,2,99999999

不匹配 

01,234,567 | 123,0445,3434, | 121,,1212,,12,

可有也可没有小数位,支持逗号分隔千分位 

^(((\d{1,3})(,\d{3})*)|(\d+))(.\d+)?$

匹配: 

9999999 | 99999.99999 | 99,999,999.9999

不匹配: 

9999. | 9,99,99999.999 | 999.9999.9999

检查正的小数或整数 

^[0-9]*(\.)?[0-9]+$

匹配:

1 | 123 | 132.132

不匹配: 

1.2.2 | -123

匹配0 – 65535范围内的整数

^([0-5]?\d?\d?\d?\d|6[0-4]\d\d\d|65[0-4]\d\d|655[0-2]\d|6553[0-5])$

匹配: 

0 | 65535 | 59999

不匹配:

123456 | 69999 | 65599

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值