js-权威指南学习笔记10
第十章 正则表达式的模式匹配
1、正则表达式是一个描述字符模式的对象。
2、可以使用RegExp()构造函数来创建RegExp对象,不过RegExp对象更多是通过一种特殊的直接量语法来创建。
3、程序运行时每次遇到对象直接量,如{}[]的时候都会创建新对象。
4、正则表达式中的所有字母和数字都是按照字面含义进行匹配的。
5、许多标点符号具有特殊含义,在正则表达式中使用这些字符的直接量进行匹配,必须进行转义。
6、将直接量字符单独放进方括号内就组成了字符类,一个字符类可以匹配它所包含的任意字符。定义否定字符类时,将一个^符号作为左方括号内的第一个字符。
7、正则模式之后跟随用以指定字符重复的标记。
8、非贪婪匹配,在待匹配的字符后跟随一个问号即可。正则表达式的模式匹配总是会寻找字符串中第一个可能匹配的位置。所以/a+?b/匹配aaab时和贪婪匹配一样返回aaab。
9、正则表达式中的圆括号有多种作用。一个作用是把单独的项组合成子表达式,以便可以像处理一个独立的单元那样用|、*、+、?等来对单元内的项进行处理。另一个作用是在完整的模式种定义子模式,当一个正则表达式成功和目标字符串相匹配时,可以从目标串中抽出和圆括号中的子模式相匹配的部分。
10、\b表示单词边界。
11、(?=表达式)是一个先行断言,用以说明圆括号内的表达式必须正确匹配,但是并不是真正意义上的匹配。
12、(?!表达式)是一个负向先行断言,表示表达式不匹配。
13、String支持四种使用正则表达式的方法,search()、replace()、match()(match()即使不是全局检索,也返回数组)、split()。
14、调用exec()的正则表达式对象具有修饰符g时,它将把当前正则表达式对象的lastIndex属性设置为紧挨着匹配字串的字符位置,当同一个正则表达式第二次调用exec()时,他将从lastIndex属性所指示的字符处开始检索。