正则表达式-理论篇

来源:互联网 发布:个人销售数据分析报告 编辑:程序博客网 时间:2024/05/16 01:14

       在做项目的时候,要在JS中根据传入的字符进行判断然后实现不同的方法.要传入的字符很多.一个一个写很麻烦,最重要的是,以后要加入新的字符的时候,JS代码还要再加入.于是想到了使用正则表达式,但是无奈书到用时方恨少.不过不算晚.所以总结一下正则表达式.

       一、元字符

元字符,自己的理解就是一个一个的字符,一个数字一个字母,换行符都是一个个符,下面列举了一些常用的元字符,用来表示我们要校验的字符串的字符。

比如我要表示输入的是一个数字,我就可以使用\d.来进行匹配,。需要注意的是,^和$并不表示字符,它只是标识字符串的开始和结束.如果只是用\d那么只要文本中包含一个数字就可以匹配到比如“w2r”,而使用了^/d$.则表示这个文本只能是一个数字,前面说到的就无法匹配到,而“3”是可以匹配的。

 


        二、限定符

限定符,可以理解字符重复的次数,比如我们来匹配手机号,匹配一个十位的数字(首位允许为0),我们就可以用\d{10}来进行匹配.再比如我们要匹配9到11位的QQ号.我们可以使用\d{9,11}来进行匹配。下面是一些常用的限定符。


      三、匹配字符集合([ ]).

我们知道使用\d可以匹配字符数字,但是如果我想要匹配开头数字为6,8的9位数的QQ号怎么办呢?我们可以使用 [68]\d{8},可以看到这里将要匹配的QQ号分成了两部分,第一部分匹配第一位,这一位要为6或者8.后面的8位为第二部分,匹配8位数字。

      四、分支条件(|).

所谓分支条件,我们可以理解为或关系.对于上面的匹配我们可以换一种,表示6\d{8}|8\d{8}.这里把要匹配的字符也分成了两部分,开头为6的为一部分,开头为8的也为一部分。也就说,满足这两个正则表达式的字符串都可以被匹配到。

         五、作用范围(())

在四则运算中我们知道()的使用方式,在正则表达式中的作用也是这样的。看这样两个表达式 68{3} 和(68){3}.很显然这两个表达式匹配的字符是不一样的,第一个匹配到的是6888,而第二个匹配到的是686868.

 

        下面咱们来分析一个ip地址的匹配.

        

          为了便于分析,我对这个IP地址进行了分组.我们先看一个常用的IP地址192.168.21.124 .

          考虑到符号(.)在IP地址中,首先对IP地址的匹配进行了分组,前三组数字是一组,包含那个点,最后一个没有点。然后对包含点的字符也分为了两部分数字和点。对于数字的匹配使用了分支。其中(2[0-4]\d)匹配了200-249,25[0-5]匹配了250-255,[0-1]\d\d?可以看到这个使用了限定符。可以匹配一位数字,两位数字和三位数字的000-199.组合到一起就组成了一个IP地址。

   

         以上就是正则表达式的一个简单的总结。

         参考资料:http://deerchao.net/tutorials/regex/regex.htm


1 0
原创粉丝点击