正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
参考技术A 一、校验数字的表达式1,数字:
^[0-9]*$
2,n 位的数字:
^dn$
3,至少 n 位的数字:
^dn,$
4,m-n 位的数字:
^dm,n$
5,零和非零开头的数字:
^(0|[1-9][0-9]*)$
6,非零开头的最多带两位小数的数字:
^([1-9][0-9]*)+(.[0-9]1,2)?$
7,带1-2位小数的正数或负数:
^(-)?d+(.d1,2)?$
8,正数、负数、和小数:
^(-|+)?d+(.d+)?$
9,有两位小数的正实数:
^[0-9]+(.[0-9]2)?$
10,有1~3位小数的正实数:
^[0-9]+(.[0-9]1,3)?$
11,非零的正整数:
^[1-9]d$ 或 ^([1-9][0-9])1,3$ 或 ^+?[1-9][0-9]*$
12,非零的负整数:
^-[1-9][]0-9"$ 或 ^-[1-9]d$
13,非负整数:
^d+$ 或 ^[1-9]d*|0$
14,非正整数:
^-[1-9]d*|0$ 或 ^((-d+)|(0+))$
15,非负浮点数:
^d+(.d+)?$ 或
^[1-9]d.d|0.d[1-9]d|0?.0+|0$
16,非正浮点数:
^((-d+(.d+)?)|(0+(.0+)?))$ 或
^(-([1-9]d.d|0.d[1-9]d))|0?.0+|0$
17,正浮点数:
^[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]))$
18,负浮点数:
^-([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])))$
19,浮点数:
^(-?d+)(.d+)?$ 或
^-?([1-9]d.d|0.d[1-9]d|0?.0+|0)$
二、校验字符的表达式
1, 汉字:
^[一-龥]0,$
2, 英文和数字:
^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]4,40$
3, 长度为3-20的所有字符:
^.3,20$
4, 由26个英文字母组成的字符串:
^[A-Za-z]+$
5, 由26个大写英文字母组成的字符串:
^[A-Z]+$
6, 由26个小写英文字母组成的字符串:
^[a-z]+$
7, 由数字和26个英文字母组成的字符串:
^[A-Za-z0-9]+$
8, 由数字、26个英文字母或者下划线组成的字符串:
^w+$ 或 ^w1,20$
9, 中文、英文、数字包括下划线:
^[一-龥A-Za-z0-9_]+$
10, 中文、英文、数字但不包括下划线等符号:
^[一-龥A-Za-z0-9]+$ 或 ^[一-龥A-Za-z0-9]2,20$
11, 可以输入含有^%&’,;=?$”等字符:
[^%&',;=?$"]+
12, 禁止输入含有~的字符:
[^~"]+
13, 不以xxx(如 jeffjade )开头(/结尾)的字符串
^(?!jeffjade).*$
^.*?(?<!jeffjade)$
三,特殊需求表达式
1, Email地址:
^([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]2,6)$ 或
w[-w.+]*@([A-Za-z0-9][-A-Za-z0-9]+.)+[A-Za-z]2,14
2, 域名地址:
[a-zA-Z0-9][-a-zA-Z0-9]0,62(/.[a-zA-Z0-9][-a-zA-Z0-9]0,62)+/.?
3, 手机号码:
^(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])d8$
4, 身份证号(15位、18位数字):
^d15|d18$
正则表达式与扩展正则表达式区别
最近在学习正则表达式时,遇到了一些问题,究其原因是正则表达式与扩展正则表达式的区别没有弄清楚 正则表达式与扩展正则表达式类似,只是扩展正则表达式表达更加简单
正则表达式需要打 \ 转义字符 来表示某些字符的意思,而扩展正则表达式则不需要:
\{m} 正则表达式表示至少表示前面的字符m次 {m} egrep一样
\? 正则表达式表示前面的字符0或1次 ? egrep一样
\+ 正则表达式表示前面的字符至少一次 + egrep一样
\(\) 正则表达式表示分组 () egrep一样
\| 正则表达式表示或 | egrep一样
其中一个问题就是IP地址不知道该如何来表示
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。
IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。
例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
IP地址(英语:Internet Protocol Address)是一种在Internet上的给主机编址的方式,也称为网络协议地址。
常见的IP地址,分为IPv4与IPv6两大类。
IP地址编址方案:IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,
其中A、B、C是基本类,D、E类作为多播和保留使用。
IPV4就是有4段数字,每一段最大不超过255。由于互联网的蓬勃发展,IP位址的需求量愈来愈大,
地址空间的不足必将妨碍互联网的进一步发展。为了扩大地址空间,拟通过IPv6重新定义地址空间。
IPv6采用128位地址长度。在IPv6的设计过程中除了一劳永逸地解决了地址短缺问题以外,
还考虑了在IPv4中解决不好的其它问题。
扩展正则表达式表示:
"\<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"
解释:用第一个括号里的数字表示 (个位数|十位数|以一开头的三位数|200-049|250-255)
用第二个括号表示 ((数字).引用)
后面的打括号表示引用次数 为3 x(xx).x(xx).x(xx).
最后一个括号表示 x(xx)
总的命令结果表示 x(xx).x(xx).x(xx).x(xx)
注:四个xxx的范围已经限定
实例:
ifconfig | "\<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"
inet 172.18.250.78 netmask 255.255.0.0 broadcast 172.18.255.255
inet 192.168.6.131 netmask 255.255.255.0 broadcast 192.168.6.255
inet 127.0.0.1 netmask 255.0.0.0
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章