正则表达式

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

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

PHP 正则表达式总结

正则表达式

正则表达式

正则表达式“或“的使用

正则表达式 验证数字格式 非负数 小数点后保留两位 数字正则 double正则

JS正则表达式详解