RegExp入门笔记
2015-09-26 15:50
387 查看
前言:
一开始我是拒绝学正则表达式的,暑假看慕课上的PHP进阶课程里有一章是专门讲正则,然后我思考的几秒钟,就略过了。理由和大家一样,畏惧,听很多人说正则很难,然后就果断放弃。但是昨天看到知乎上有个话题,问大家为什么不喜欢正则,然后看到下面很多大神说正则处理字符串很有用,很有用,很有用,甚至有人说正则很有趣! 好吧,既然有用的东西,就一定要学,一定要学,一定要学!想当年我学微观经济这门课都是拒绝的,头疼的,但是后来期末备考却发现它的乐趣。所以,任何事情,只要用心投入,一定会收获到乐趣。
什么是RegExp?
描述字符串规则的表达式。
语法
直接量语法:/pattern/attrs
创建对象的语法:new RegExp(pattern,attrs)
参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。
参数 attributes 是一个可选的字符串,包含属性 "g"表示全局匹配,"i" 表示不区分大小写的匹配。
测定正则表达式与指定字符串是否匹配。只要指定字符串中包含正则表达式,则返回true,否则返回false。
regexpObj.exec(str)
更强大的搜索,更详尽的结果:index,过程的状态:lastindex
锚点
用来匹配一个位置。
^ 表示起始位置
$表示结尾位置
\b表示单词边界
字符类
匹配一类字符中的一个
[abc] 表示a或b或c
[0-9] 表示0到9中的任何一个数字
[^0-9] 表示非数字的一个字符,这里的^ 表示非的意思
[a-z] 表示a到z中任何一个字母
. 表示任何一个字符(换行除外)
元字符
具有特殊意义的字符
\d 等价于[0-9],表示查找数字
\D 等价于[^\d],表示查找非数字
\s表示查找空白字符,空白符指的不只是按下空格键在屏幕上显示的空格字符,还包括制表符,换行和回车符。
\S等价于[^\s],表示查找非空白字符
\w等价于[A-Za-z0-9],表示查找单词字符
\W等价于[^\w],表示查找非单词字符
量词
表示出现的次数
{m,n}表示m到n次
* 表示{0,} 即0到任意次
? 表示{0,1} 即0或者1次
+ 表示{1,...} 即1到任意次
例子:
/^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表示全局模式。
正则表达式中,量词的惰性与贪婪模式的区别?
一开始我是拒绝学正则表达式的,暑假看慕课上的PHP进阶课程里有一章是专门讲正则,然后我思考的几秒钟,就略过了。理由和大家一样,畏惧,听很多人说正则很难,然后就果断放弃。但是昨天看到知乎上有个话题,问大家为什么不喜欢正则,然后看到下面很多大神说正则处理字符串很有用,很有用,很有用,甚至有人说正则很有趣! 好吧,既然有用的东西,就一定要学,一定要学,一定要学!想当年我学微观经济这门课都是拒绝的,头疼的,但是后来期末备考却发现它的乐趣。所以,任何事情,只要用心投入,一定会收获到乐趣。
什么是RegExp?
描述字符串规则的表达式。
语法
直接量语法:/pattern/attrs
创建对象的语法:new RegExp(pattern,attrs)
参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。
参数 attributes 是一个可选的字符串,包含属性 "g"表示全局匹配,"i" 表示不区分大小写的匹配。
RegExp 对象方法
regexpObj.test(str)测定正则表达式与指定字符串是否匹配。只要指定字符串中包含正则表达式,则返回true,否则返回false。
regexpObj.exec(str)
更强大的搜索,更详尽的结果:index,过程的状态:lastindex
锚点
用来匹配一个位置。
^ 表示起始位置
$表示结尾位置
\b表示单词边界
字符类
匹配一类字符中的一个
[abc] 表示a或b或c
[0-9] 表示0到9中的任何一个数字
[^0-9] 表示非数字的一个字符,这里的^ 表示非的意思
[a-z] 表示a到z中任何一个字母
. 表示任何一个字符(换行除外)
元字符
具有特殊意义的字符
\d 等价于[0-9],表示查找数字
\D 等价于[^\d],表示查找非数字
\s表示查找空白字符,空白符指的不只是按下空格键在屏幕上显示的空格字符,还包括制表符,换行和回车符。
\S等价于[^\s],表示查找非空白字符
\w等价于[A-Za-z0-9],表示查找单词字符
\W等价于[^\w],表示查找非单词字符
量词
表示出现的次数
{m,n}表示m到n次
* 表示{0,} 即0到任意次
? 表示{0,1} 即0或者1次
+ 表示{1,...} 即1到任意次
例子:
/^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表示全局模式。
正则表达式中,量词的惰性与贪婪模式的区别?
相关文章推荐
- 信息安全系统设计基础第二周学习总结
- MAC: cannot use typeid with -fno-rtti
- 1.2 Xshell连接CentOS
- rpc框架之gRPC 学习 - hello world
- Ext.onready详解
- 关于ogrebullet中如何判断两个物体何时碰撞的问题
- 【POJ 3265】Problem Solving
- Apache配置介绍
- 新建安卓工程报错
- iOS中一种网络层与业务层的设计方案
- ios8 右滑返回不能禁止
- jQuery实现瀑布流
- structure-object structure-object-pointer
- 【原创】LogCat信息演示Activity生命周期
- POJ2018 最大平均值问题
- [LeetCode]203 Remove Linked List Elements
- poj3624charm bracelet【背包】
- 浅谈2015新版 U-Boot
- C基础--队列的构造
- linux安装mysql