正则表达式

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

以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章