深入剖析正则表达式
首先,我想问一个问题,为什么么需要正则表达式?
如果我给你一篇文章,要你找出四个字母连续在一起的字串,而且这4个字母必须是第一位和第三位相同,第二位和第四位相同,怎么做到呢?
如果用户要登录自己的电子邮箱,你如何去验证这些邮箱是否格式正确呢?
这时就要用正则表达式了,正则表达式基本得到了所有语言的支持,如php,java,javascript,C,C#,C++等等。
想要了解什么是正则表达式,我们先看看他的语法,毕竟从语法入手,知根知底的学起来是比较快的。
先看一个正则表达式的例子:(这里以javascript为例)
Var reg=/(\d)(\d)\2\1/gi
解释如下:
//:正则表达式就要写在这对斜杠里。
(/d)表示一个子表达式。
\2表示要反向引用第二个子表达式的内容,同理,\1自然就表示要反向引用第一个子表达式的内容。注意:子表达式指的是一个括号里面包含的内容。
比如这个正则表达式就可以识别7889这样的数字了。
想必经过这个例子,对正则表达式都有一个比较清晰的认识了,原来正则表达式不是想象中那么难,不过如此嘛,不过你想要真正的灵活运用正则表达式,还是必须去了解各种元字符的功能的。功能可以分为以下几种:
1:限定符:
听名知义,用于指定前面的字符和组合连续出现多少次。举例如下:
/A{3}/:表示连续出现三个A;
/a{3,4}/:表示a至少出现3次,最多出现四次,那么如果这样一个字串iloveaaaassss这么个字串他是识别aaa呢还是aaaa呢?记住,javascript默认的是贪婪匹配原则,自然输出的就是aaaa咯。
/a+/:表示a出现一次到任意多次。
/a*/:表示a出现0次到任意多次。
2:字符匹配符
/[a-z]/:表示a到z中任意一个字符,同理/[1-9]/大家该明白什么意思啦。
/[^a-z]/:同上面的相反,表示可以匹配不是a到z的字符。
\d:这几个是特殊的:表示可以匹配任意一个数字。
\D:同上面相反。
\w:匹配任意英文字符,数字,下划线。
\W:同上面相反。
\s:匹配任意空白字符。
\S:同上面相反。
.:匹配\n自外的所有字符,但是如果仅仅匹配本身的话,\.这样就可以了。
3:转义符:
需要用到转义符的字符如下:
. * ( ) $ / \ ? [ ] ^ { }一共12个。
4:定位符:
/^peng/:这表示该字符串只能是以peng开头了哦,注意与/[^peng]/区分开哦。
/peng$/:这表示只能以这四个字符结尾。
5:选择匹配符。
/(peng)|彭/:表示出现的是peng或者彭都可以的。
好了,想必大家对正则表达式已经有一定的了解了,不过要做到真正的熟练运用,怕还是要在项目中多多应用多多碰壁才能知道的。如果你想要看更多精彩的文章,可以访问我们公司的网站。作为最好的自贡网络公司,高质量的产品和分享经验共同进步一直是我们的原则。