加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

常用正则表达式

发布时间:2020-12-13 22:22:26 所属栏目:百科 来源:网络整理
导读:常用正则表达式 正则表达式用于字符串处理、表单验证等场合。以备不时之需。 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的

常用正则表达式

正则表达式用于字符串处理、表单验证等场合。以备不时之需。

匹配中文字符的正则表达式: [u4e00-u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

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

匹配空白行的正则表达式:ns*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}
评注:匹配形式如 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个英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式

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

验证数字:^[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
表达式:^((4d{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 | 342222222222111
不匹配: 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
表达式:(?:4d{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,}40[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}2d{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,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|COMd|LPTd|..*)(..+)?$)[^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
不匹配:
222221========================================================================================数字格式

表达式:

^$?(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}))$|^($?([1-9]{1}d{0,2})))$

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

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

4,00.000 | abc | $

^d{0,2}(.d{1,Arial; line-height:26px"> 输入为两位数的整数,小数

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,[0-9]{3})*(.[0-9]{0,2})?|[1-9]{1}[0-9]{0,2})?|(.[0-9]{1,2})?)$

$0,123.50 | $00.5

整数或两位小数

^d+(?:.d{0,Arial; line-height:26px"> 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})?%?$

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,Arial; line-height:26px"> 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|,Arial; line-height:26px"> 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

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,([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$

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

包括,号整数串

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

01,234,567 | 123,0445,3434,| 121,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]ddd|65[0-4]dd|655[0-2]d|6553[0-5])$

0 | 65535 | 59999

123456 | 69999 | 65599

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读