前言:
一开始我是拒绝学正则表达式的,暑假看慕课上的PHP进阶课程里有一章是专门讲正则,然后我思考的几秒钟,就略过了。理由和大家一样,畏惧,听很多人说正则很难,然后就果断放弃。但是昨天看到知乎上有个话题,问大家为什么不喜欢正则,然后看到下面很多大神说正则处理字符串很有用,很有用,很有用,甚至有人说正则很有趣! 好吧,既然有用的东西,就一定要学,一定要学,一定要学!想当年我学微观经济这门课都是拒绝的,头疼的,但是后来期末备考却发现它的乐趣。所以,任何事情,只要用心投入,一定会收获到乐趣。
什么是RegExp?
描述字符串规则的表达式。
语法
参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。
参数 attributes 是一个可选的字符串,包含属性 "g"表示全局匹配,"i" 表示不区分大小写的匹配。
regexpObj.test(str)
测定正则表达式与指定字符串是否匹配。只要指定字符串中包含正则表达式,则返回true,否则返回false。
regexpObj.exec(str)
更强大的搜索,更详尽的结果:index,过程的状态:lastindex
锚点
用来匹配一个位置。
字符类
匹配一类字符中的一个
元字符
具有特殊意义的字符
量词
表示出现的次数
例子:
/^1\d{10}$/ 表示匹配一个以1开头,一共有11个数字的字符串
转义符
需要匹配的字符是特殊字符,所以需要转义一下啦
例子:
/@163\.com$/ 表示匹配一个以@163.com结束的字符串,其中.是特殊字符,需要转义
多选分支
或用|表示
例子:
/b(a|e)d/ ===/b[ae]d/ 表示匹配bad或者bed
/\.(png|jpg|gif|jpeg)$/ 表示匹配图片格式
字符类是一种特殊的多选分支
捕获
保存匹配到的字符串,以便日后再用。
()表示捕获
(?:)表示不捕获
支持正则表达式的 String 对象的方法
str.match(regexp)
获取匹配的字符串
str.replace(regexp/substr,replacement)
替换与正则表达式匹配的子串。
btw:正则表达式的匹配只做一次,因此需要用到属性g表示全局模式。
原文:http://www.cnblogs.com/rosestudy/p/4840787.html