<JavaScript权威指南>读书笔记之正则表达式
2013-10-10 00:27
295 查看
一、定义
二、特殊字符
正则表达式中许多标点符号具有特殊的含义:^$.*+?=!:|\/()[]{}。若想把它们当做普通字符处理,则需转义,即在这些符号之前加\
三、字符类
[...] 位于中括号内的任意字符
[^..] 不在中括号内的任意字符
. 除换行符和其他Unicode行终止符之外的任意字符
\w 任何ASCII单字符,等价于[a-zA-Z0-9_]
\W 任何非ASCII单字符,等价于[^a-zA-Z0-9_]
\s 任何Unicode空白符
\S 任何非Unicode空白符的字符
\d 任何ASCII数字,等价于[0-9]
\D 任何非ASCII数字,等价于[^0-9]
四、字符重复
{n,m} 匹配前一项至少n次,至多m次
{n,} 匹配前一项至少n次
{n} 匹配前一项至少n次
? 匹配前一项0次或1次,等价于{0,1}
* 匹配前一项至少0次,等价于{0,}
+ 匹配前一项至少1次,等价于{1,}
五、选择、分组、引用
| 选择。匹配的是该符号左边子表达式或右边子表达式。
(...) 组合。将几个项组合为一个单元,可供*、?、+和|等符号使用,还可记住和这组合匹配的字符以供此后的引用使用。
(?..) 只组合不引用。把几个项组合为一个单元,但不记忆于该组合匹配的字符
\n 和第n个分组第一次匹配的字符相匹配。组是括号中的子表达式。组号从左到右计数,以(?:)形式分组的组不编号。
例子
六、锚字符
^ 匹配字符串的开头,在多行匹配时,匹配一行的开头。
$ 匹配字符串的结尾,在多行匹配时,匹配一行的结尾。
\b 匹配一个单词的边界,即是位于字符\w和\W之间的位置,或位字符\w和字符串的开头或结尾之间的位置。
\B 匹配非单词边界的位置
(?=p) 正前向声明,要求接下来的字符都与模式p匹配,但不包含匹配中的那些字符
(?!p) 反前向声明,要求接下来的字符不与模式p匹配。
例子
//正则表达式直接量 var regex = /s/; //正则表达式对象RegExp var regex = new RegExp('s');
二、特殊字符
正则表达式中许多标点符号具有特殊的含义:^$.*+?=!:|\/()[]{}。若想把它们当做普通字符处理,则需转义,即在这些符号之前加\
三、字符类
[...] 位于中括号内的任意字符
[^..] 不在中括号内的任意字符
. 除换行符和其他Unicode行终止符之外的任意字符
\w 任何ASCII单字符,等价于[a-zA-Z0-9_]
\W 任何非ASCII单字符,等价于[^a-zA-Z0-9_]
\s 任何Unicode空白符
\S 任何非Unicode空白符的字符
\d 任何ASCII数字,等价于[0-9]
\D 任何非ASCII数字,等价于[^0-9]
四、字符重复
{n,m} 匹配前一项至少n次,至多m次
{n,} 匹配前一项至少n次
{n} 匹配前一项至少n次
? 匹配前一项0次或1次,等价于{0,1}
* 匹配前一项至少0次,等价于{0,}
+ 匹配前一项至少1次,等价于{1,}
五、选择、分组、引用
| 选择。匹配的是该符号左边子表达式或右边子表达式。
(...) 组合。将几个项组合为一个单元,可供*、?、+和|等符号使用,还可记住和这组合匹配的字符以供此后的引用使用。
(?..) 只组合不引用。把几个项组合为一个单元,但不记忆于该组合匹配的字符
\n 和第n个分组第一次匹配的字符相匹配。组是括号中的子表达式。组号从左到右计数,以(?:)形式分组的组不编号。
例子
//选择 var regex = /ab|cd|ef/;//匹配ab或者cd或者ef //分组 var regex = /java(script)?/;//匹配java,script可有可无 //引用 var regex = /(['"])[^'"]*\1/;//\1表示第一括号内的子模式。开始的引号和结尾的引号要相匹配,即开始是单引号则结尾也是单引号。 //只分组,不引用 var regex = /[Jj]ava(?:[Ss]cript)?/;//子表达式(?:[Ss]cript)仅用于分组,不会生成引用。所以\1在此子表达式无效。
六、锚字符
^ 匹配字符串的开头,在多行匹配时,匹配一行的开头。
$ 匹配字符串的结尾,在多行匹配时,匹配一行的结尾。
\b 匹配一个单词的边界,即是位于字符\w和\W之间的位置,或位字符\w和字符串的开头或结尾之间的位置。
\B 匹配非单词边界的位置
(?=p) 正前向声明,要求接下来的字符都与模式p匹配,但不包含匹配中的那些字符
(?!p) 反前向声明,要求接下来的字符不与模式p匹配。
例子
//选择 var regex = /ab|cd|ef/;//匹配ab或者cd或者ef //分组 var regex = /java(script)?/;//匹配java,script可有可无 //引用 var regex = /(['"])[^'"]*\1/;//\1表示第一括号内的子模式。开始的引号和结尾的引号要相匹配,即开始是单引号则结尾也是单引号。 //只分组,不引用 var regex = /[Jj]ava(?:[Ss]cript)?/;//子表达式(?:[Ss]cript)仅用于分组,不会生成引用。所以\1在此子表达式无效。
相关文章推荐
- <Python高级全栈开发工程师-1>学习过程笔记【181-184】正则表达式 <特殊字符><函数>
- <转>(笔记)正则表达式的几种引擎
- 使用正则表达式匹配HTML 下各种<title>标签
- < 笔记 > Java SE - 10 Java SE 正则表达式
- <摘录>perl正则表达式中的元字符、转义字符、量词及匹配方式
- <img>正则表达式
- <(\S*?)[^>]*>.*?</\1>|<.*? />这个正则表达式该如何解释?
- <转>PHP中正则表达式函数
- JavaScript权威指南 正则表达式的模式匹配 读书笔记
- <JavaScript语言精粹>--<读书笔记三>之replace()与正则
- <转>常用正则表达式大全,手机、电话、邮箱、身份证(最严格的验证)、IP地址、网址、日期等,一般前台js验证
- <18>python学习笔记——正则表达式
- sed-正则表达式-去掉每一行的<>标签
- Editplus 中将文本换行替换为<p>标签的正则表达式
- <转>正则表达式语法
- <Java 并发编程实践>读书笔记 --- 重排序
- <<Effective C++>>读书笔记(1)
- C# 正则表达式去除<p>标签
- <Python进阶读书笔记>之(五) 条件表达式
- 《Javascript权威指南》学习笔记之十一:处理字符串---String类和正则表达式