当前位置:文档之家› 正则表达式1

正则表达式1

正则表达式
7.1、在JavaScript中,正则表达式是对Perl版的改进和发展。

7.2、^表示一个字符串的开始,$表示一个字符串的结束。

7.3、(?:...)表示一个非捕获型分组(noncapturing group)。

7.4、(...)表示一个捕获型分组(capturing group)。

7.5、[...]表示一个字符类,[^?#]表示一个字符类包含除?和#之外的所有字符。

7.6、有两个方法来创建RegExp对象。

优先采用正则表达式字面量。

如下:
var my_regexp=/"(?:\\.|[^\\\"])*"/g;但如果要使用RegExp构造器创建一个正则表达式,要多加小心,因为反斜杠在正则表达式和在字符串字面量中有不同的含义。

通常需要双写反斜杠及对引号进行转义:
var my_regexp=new RegExp("\"(?:\\.|[^\\\\\\\"])*\"",'g');7.7、在RegExp中,有三个标志:g、i和m。

7.8、RegExp对象的属性
属性用法
global如果标志g被使用,值为true
ignoreCase如果标志i被使用,值为true
lastIndex下一次exec匹配开始的索引。

初始值为0
multiline如果m被使用,值为true
source正则表达式源代码文本
7.9、一个正则表达式因子可以是一个字符、一个由圆括号包围的组、一个字符类,或者是一个转义序列。

除了控制字符和特殊字符以外,所有的字符都将被按照字面处理:\/[](){}?+*|.^$
如果上面列出的字符按字面去【匹配,那么必须要一个\前缀来进行转移。

7.10、正则表达式转义:
\f是换页符,\n是换行符,\r是回车符,\t是制表符,\u允许指定一个Unicode字符来表示一个十六进制的常量
\d等同于[0-9]
\s等同于[\f\n\r\t\u000B\u0020\u00A0\u2028\u2029]。

这是Unicode空白符的一个不完全子集。

\S表示与其相反的:[^\f\n\r\t\u000B\u0020\u00A0\u2028\u2029]
\w等同于[0-9A-Z_a-z]。

\W则表示与其相反。

\b被指定为一个字的边界标志。

\1是指分组1所捕获到的文本的一个引用,\2指向分组2的引用,\3指向分组3的引用,以此类推。

7.11、正则表达式分组共有4种:捕获型、非捕获型、向前正向匹配和向前负向匹配。

7.12、正则表达式字符类内部的转义规则和正则表达式因子相比稍有不同。

[\b]是退格符。

下面是在字符类中需要被转义的特殊字符:
-/[\]^
7.13、正则表达式因子可以用一个正则表达式量词后缀,用来决定这个因子应该被匹配的次数。

包围在一对花括号中的一个数字表示这个因子应该被匹配的次数。

所以,/www/和/w{3}/等价。

{3,6}将【匹配3、4、5或6次。

{3,}匹配3次或更多次。

7.14、?等同于{0,1}。

*等同于{0,}+则等同于{1,}。

7.15、如果只有一个量词,则趋向于进行贪婪性的匹配,即匹配尽可能多的重复直至达到上限。

如果这个量词还有一个额外的后缀?,那么则趋向于进行懒惰性匹配,即试图匹配尽可
能少的必要重复。

总结:本章对正则略感并未深入,关于“捕获分组”即点到为止,也未触及“零宽断言”的概念(一个使用零宽断言的例子——《不包含字符串abc的正则表达式》)。

《正则表达式30分钟入门教程》言简意赅地丰富并弥补了这些不足。

相关主题