正则表达式(上篇)
2013-08-03 17:20 昨日书 阅读(1573) 评论(5) 编辑 收藏 举报写在最前面的话
已经有近2个星期没有更新博客了,前期一直在培训、考核以及熟悉项目组项目,想起前两天在园子里学习到了一个新词语——“不明觉厉”,说句实话,我目前就处于这个状态,只要是别人知道的某个非常牛东西就算我一点也不明白也会非常厉害,感觉这个状态可能要持续好久厄!终于到了周末,好好休息下,顺便写点东西、、、、
今天写点关于正则表达式的知识
正则表达式小知识
对于正则表达式,我们必须理解一点:正则表达式是对字符串操作的逻辑公式,我们可以使用它构建一个规则,然后验证某字符串是否满足该规则(也就是我们常会说匹配),因此我们可以将它当作一个工具来使用。同时正则表达式操作的对象主要是文本,所以但凡与文本相关的逻辑操作,我们都可以尝试用正则试试。其实正则这个东东也很令人头疼,写错一点点结果就会不对,而且表达式不易记住,有点坑。不过我们不能因为它的缺点而放弃它的学习对吧,它在很多地方都有广泛使用,下面我们就进入学习下吧!
正则表达式怎么写?
由于正则表达式这个东东是属于那种实用型的知识,用实例讲解更易理解,毕竟看到效果嘛!!!
示例一:
var regx = new RegExp("C"); console.log(regx.test("ABCD"));
上述例子我们定义了一个最简单的正则表达式regx,它的目的就是匹配任意字符串中是否含有“C”字符,输出结果为true,如果我们将C改为E,则结果为false
示例二:
var regx = new RegExp("ello","gi"); var test = "hello,my name is ello !".match(regx); console.log(test);
上述例子结果为["ello", "ello"],我们可以看到匹配了两个ello,一个是hello中的ello,另一个是单独的ello,假若我没有加上第一句中的第二个参数gi,那么的得到的结果就是["ello"],因为如果我不加gi,正则表达式默认是匹配到第一个满足条件的结果就终止,使用gi参数就是设置正则为全局匹配。
示例三:
在写示例三之前我必须首先告诉大家几个常用的元字符:
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
看到这里我们,我们试着写一个匹配QQ的正则,我们知道比较常见的QQ位数是8到12位,于是我们可以这么来写 ^\d{8,12}$,在这里我们用到了上面表格中的元字符,正则表达式前面的^和末尾的$分别是正则的开始和结束,紧接着\d开始匹配数字(也就是0到9咯),在后面有一对花括号,它的意思就是数字可以重复8次到12次之间,如果我们花括号中只写8,那么表明它只可重复8次,如果我们写成^\d{8,}$则它可以重复8次或8次以上。
接下来写一个匹配区号只有3位,号码位数为7位的的电话号码的正则:
^\(?0\d{2}[) -]?\d{7}$ //注意,红色块显示的是三个字符 )、空格、-
我们来理解一下下:首先我们是我们的正则开始,接着是一个转义字符,允许重复一次或零次,然后匹配0,接着重复数字两次,紧接着出现一对[ ],出现里头三个字符其中的一个或不出现,最后匹配7个数字,例如这个正则表达式可以匹配027-8576812;(027)9676143;02789780098等等
示例四:
好吧现在给一个我们经常用的邮箱验证正则:
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$
将这个正则分解开好看多了,当然啦,这个正则表达式是最通用的那种啦,我们常见的其中还会有限定条件。
示例五:
^(\d{1,3}\.){3}\d{1,3}$ //IP地址
^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$ //18位身份证号码
最后需要注意点是我们如果需要匹配的字符中有元字符,我们需要使用转义字符"\"
弱弱的结尾了、、、
今天就到这里吧,接下来的下篇我会详细的写点关于正则的示例,进一步理解正则表达式,包括分支分组以及复杂的正则理解和写出自己实际需要的正则表达式。
说句实话,正则表达式就是个怪异的语言,需要多加理解和运用,当然咯好多我也木有记住,忘记了总是得去查!
------如果你觉得此文对你有所帮助,别忘了点击下右下角的推荐咯,谢谢!------