
刚刚收到李炎恢老师的弟子CJ写的一部JavaScript+Ajax+JQuery视频教程,对于我这种刚入门级的菜菜来说真是雪中送炭呀!今天看到了正则表达式章节,感觉老师讲得非常不错,做点笔记与大家分享,当然也做个免费广告哈:如果想购买此视频教程的话点击这里。绝对物超所值,现在网络上最新的关于JS的视频教程也就是这个了哦。
1.什么是正则表达式
正则表达式是由普通字符(如a到z)以及特殊字符(称为元字符)组成的文字模式,该模式描述在查找文字主体时待匹配的一个或者多个字符串。作为一个模板,将字符模式与所搜索的客串进行匹配。
关于元字符与匹配内容可以参考这张表:正则匹配表
2.怎么创建正则表达式
var re = new RegExp();//RegExp是一个对象,和Aarray一样
//但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去
re = new RegExp(“a”);//最简单的正则表达式,将匹配字母a 可简写为“var re = /a/”
re = new RegExp(“a”,”i”);//第二个参数,表示匹配时不分大小写
RegExp构造函数第一个参数为正则表达式内容,而第二个参数则为可选项标志,而且可以组合使用。可选标志如:
- g (全文查找)
- i (忽略大小写)
- m (多行查找)
var re = new RegExp(“a”,”gi”);
//匹配所有的a或A。可简写为“var re = /a/gi”
3.正则表达式对象的方法
三种方法分别是test,exec,compile:
- test:返回一个Boolean值,它指出在被查找的字符串中是否存在模式。
- exec:用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。
- compile:把正则表达式编译为内部格式,从而执行得更快。
4.正则表达式的属性
常用的有以下几种:
- source:返回表达式文本的复本。只读。
- lastIndex:返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。
- $1…$9:返回九个在模式匹配期间找到的、最近保存的部分。只读。
- input ($_):返回执行规范表述查找的字符串。只读。
- lastMatch ($&):返回任何正则表达式搜索过程中的最后匹配字符。只读。
- leftContext ($`) :返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。只读。
- rightContext ($’) 返回被搜索的客串中从最后一个匹配位置开始到字符串结尾之间的字符。只读
5.动手测试正则表达式是如何工作的
用test方法测试是否匹配模式:
var re = /he/; //最简单的正则表达式,将匹配he这个单词
var str = “he”;
alert(re.test(str)); //用test方法测试是否匹配,返回true
str = “we”;
alert(re.test(str)); //false
str = “HE”;
alert(re.test(str)); //false
re = /he/i; //加上可选标识i(ignoreCase)来忽略大小写
alert(re.test(str)); //true
str = “yeah~he loves her”;
alert(re.test(str)); //true
脱字符(^)开头匹配:(查表看看什么是脱字符)
re = /^he/i;
alert(re.test(str)); //false,因为he不在str最开始
str = “He is a good guy!”;
alert(re.test(str)); //true
美元符($)末尾匹配:
re = /^he$/i; //$表示字符结束位置
alert(re.test(str)); //返回false说明”he is a good guy”不是以he结尾
str = “He”;
alert(re.test(str)); //返回true
(\s)空白字符匹配:(包括空格,制表符,换行,换页等)
str = “user Name”;
re = /\s/;
alert(re.test(str)); //str=”user\nName”也将返回true
方括号([ ])范围匹配:
re = /^[a-z]/i; //匹配开头为a~z中任意字符并且不区分大小写
str = “variableName”;
alert(re.test(str)); //true
str = “123variableName”;
alert(re.test(str)); //false
用exec方法测试哪些字符匹配了模式:
var osVersion = “Ubuntu 8″;
var re = /^[a-z]+\s+\d+$/i; //+表示字符至少出现1次,\d表示一个数字//这个正则表示:匹配 以a~z中任意字母为开头、至少有一个空白字符、至少有一个数字结尾的字符串
alert(re.test(osVersion)); //truere = /^[a-z]+\s+\d+$/i;
arr = re.exec(osVersion);
alert(arr[0]); //将osVersion完整,因为它刚好匹配re
//我们只想取出数字..
re=/\d+/;
arr = re.exec(osVersion);
alert(arr[0]); //返回8
复杂一点的子匹配:
re = /^[a-z]+\s+(\d+)$/i; //用()来创建子匹配
arr = re.exec(osVersion);
alert(arr[0]+”\n”+arr[1]); //arr[1]为第一个子匹配也就是版本号8osVersion = “Ubuntu 8.10″;
re = /^[a-z]+\s+(\d+)\.(\d+)$/i; //.是正则中的元字符需要转义即“\.”表示输出一个.号
arr = re.exec(osVersion);
alert(“完整版本:”+arr[0]+”\n大版本号:”+arr[1]+”\n字版本号:”+arr[2]);
休息一下精彩继续…

可以分享一下不?如果转不出来ISO的我可以告诉你怎么转.之前我在电驴上面就有分享java26日通的,要是愿意的话麻烦共享一份给我啊.谢谢了.
呵呵 学习了
额 ,dvd导出来,分享之,分享之。哈哈哈
@宅男 哈哈。那样侵权的哦~
kily,来你这里发广告的人越来越多啦^_^
我第一次学正则时,是张孝祥的javascript体验,感觉那个好难懂啊.看长点的,头会转晕!
@踏雪残情 所以刚装了验证码插件,效果挺好的。
我也看过张孝祥的教程,也没看懂,这个好多了。有兴趣的话去那个连接买个盘慢慢看哦。物超所值。
说的很好~~~我会常来看的~~~
来看看博主,文章写的不错
值得一看哈
不错的,顶一下,最新排名技术文章订阅.
正则好像在一些软件上也可以用到吧
相当威武
@A.shun 感觉主要还是用于一些比较繁琐的验证,总之正则的确是样“神器”。
怎么又做推广的评论啊,赶紧删除
@林西老九 最近垃圾留言太多了,不知该咋办,实在不行就上验证码了!
可以加一个JS验证,如果发现留言里面有链接就K掉。
@wuleilei 刚好写个正则哈!
山东分类信息网
山东信息吧
青岛信息网
山东信息网
已经加入收藏夹,太Q了这个界面!
@集思 哈哈。感谢支持啦!
写的不错,博主继续努力!
哈哈,沙发~
正则表达式我还真不熟,好东西,收藏了!
@wuleilei 这两天垃圾评论真烦人,差点就看不到你的留言了哈。
哈哈,发现最近垃圾评论特别喜欢你的博客,经常一过来就发现一堆广告。