首页 > 其他 > 详细

【笔记】正则表达式

时间:2020-03-04 15:24:57      阅读:65      评论:0      收藏:0      [点我收藏+]

前言

正则表达式,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。维基百科

基本语法

匹配字符串的开始

1
^

匹配字符串的结束

1
$

定义一个字符串的字符范围

1
[]

任何空白字符

1
s

任何非空白字符

1
S

一个数字字符

  • 等价于[0-9]
1
d

一个非数字字符

  • 等价于[^0-9]
    ^代表排除
1
D

一个数字、字母、下划线字符

  • 等价于[0-9a-zA-Z_]
1
w

一个非数字、字母、下划线字符

  • 等价于[^0-9a-zA-Z_]
1
W

除了换行符之外的任意一个字符

1
.

匹配前一项n次

1
{n}

匹配前一项n次及以上

1
{n,}

匹配前一项至少n次,至多m次

1
{n,m}

匹配前一项0次及以上

  • 等价于{0,}
1
*

匹配前一项1次及以上

  • 等价于{1,}
1
+

匹配前一项0次或1次

  • 等价于{0,1}
1
?

常用的正则表达式

校验数字的表达式

数字

1
^[0-9]*$

n位的数字

1
^d{n}$

至少n位的数字

1
^d{n,}$

m~n位的数字

1
^d{m,n}$

0和非0开头的数字

1
^(0|[1-9][0-9]*)$

非0开头的最多带两位小数的数字

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

带1~2位小数的正数或负数

1
^(-)?d+(.d{1,2})?$

正数、负数、小数

1
^(-|+)?d+(.d+)?$

有两位小数的正实数

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

有1~3位小数的正实数

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

非0的正整数

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

非0的负整数

1
2
^-[1-9][]0-9"*$
^-[1-9]d*$

非负整数

1
2
^d+$
^[1-9]d*|0$

非正整数

1
2
^-[1-9]d*|0$
^((-d+)|(0+))$

非负浮点数

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

非正浮点数

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

正浮点数

1
2
^[1-9]d*.d*|0.d*[1-9]d*$
^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$

负浮点数

1
2
^-([1-9]d*.d*|0.d*[1-9]d*)$
^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$

浮点数

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

校验字符的表达式

汉字

1
^[u4e00-u9fa5]{0,}$

英文和数字

1
2
^[A-Za-z0-9]+$
^[A-Za-z0-9]{4,40}$
大专栏  【笔记】正则表达式>

长度为3~20的所有字符

1
^.{3,20}$

由26个英文字母组成的字符串

1
^[A-Za-z]+$

由26个大写英文字母组成的字符串

1
^[A-Z]+$

由26个小写英文字母组成的字符串

1
^[a-z]+$

由数字和26个英文字母组成的字符串

1
^[A-Za-z0-9]+$

由数字、26个英文字母或者下划线组成的字符串

1
2
^w+$
^w{3,20}$

中文、英文、数字、下划线

1
^[u4E00-u9FA5A-Za-z0-9_]+$

中文、英文、数字,不包括下划线等符号

1
2
^[u4E00-u9FA5A-Za-z0-9]+$
^[u4E00-u9FA5A-Za-z0-9]{2,20}$

可以输入含有^%&’,;=?$"等字符

1
[^%&',;=?$x22]+

禁止输入含有~的字符

1
[^~x22]+

特殊需求表达式

Email地址

1
^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$

域名

1
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

InternetURL

1
2
^[a-zA-z]+:
^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$

手机号码

1
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])d{8}$

电话号码

1
^((d{3,4}-)|d{3.4}-)?d{7,8}$

国内电话号码

1
^d{3}-d{8}|d{4}-d{7}$

身份证号

1
^d{15}|d{18}$

短身份证号码

1
2
^([0-9]){7,18}(x|X)?$
^d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

帐号是否合法

1
^[a-zA-Z][a-zA-Z0-9_]{4,15}$

密码

1
^[a-zA-Z]w{5,17}$

强密码

1
^(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

日期格式

1
^d{4}-d{1,2}-d{1,2}

一年的12个月

1
2
^(0?[1-9]|1[0-2])$
>=1 && <=12

一个月的31天

1
^((0?[1-9])|((1|2)[0-9])|30|31)$

钱的输入格式

1
2
3
4
5
6
7
8
^[1-9][0-9]*$
^(0|[1-9][0-9]*)$
^(0|-?[1-9][0-9]*)$
^[0-9]+(.[0-9]+)?$
^[0-9]+(.[0-9]{2})?$
^[0-9]+(.[0-9]{1,2})?$
^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

xml文件

1
^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$

中文字符的正则表达式

1
[u4e00-u9fa5]

双字节字符

1
^[x00-xff]$

空白行的正则表达式

1
ns*r

HTML标记的正则表达式

1
<(S*?)[^>]*>.*?</1>|<.*? />

首尾空白字符的正则表达式

1
2
^s*|s*$
(^s*)|(s*$)

腾讯QQ号

1
[1-9][0-9]{4,}

中国邮政编码

1
[1-9]d{5}(?!d)

IP地址

1
2
d+.d+.d+.d+
((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))

参考文献

QQ群——DT课堂 - 辛末 - 11月新群

【笔记】正则表达式

原文:https://www.cnblogs.com/lijianming180/p/12409643.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!