JavaScript读书笔记(三)-RegExp类型
RegExp类型
ECMAScript通过RegExp类型来支持正则表达式。使用下面类似Perl的语法,就可以创建一个正则表达式。
var expression=/pattern/flags;
模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符类、限定类、分组、向前查找以及反向引用。每个正则表达式都可带有一或多个标志(flags),用以标明正则表达式的行为。正则表达式的匹配模式支持下列3个标志。
- g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止;
- i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;
- m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。
如下例:
/*匹配字符串中所有“ed”的实例*/ var pattern1=/ed/g; /*匹配第一个"cat"或"cat",不区分大小写*/ var pattern2=/[bc]at/i; /*匹配所有已"jpg"结尾的3个字符的组合,不区分大小写*/ var pattern2=/.jpg/gi;
注:模式中使用的所有元字符都必须转义,正则表达式中的元字符包括:( [ { \ ^ $ ) ? * + . ] }
元字符在正则表达式中都有一或多种特殊用途,因此想要匹配字符串中包含的这些字符,就必须对它们进行转义。
如下例:
/*匹配第一个"bat"或"cat",不区分大小写*/ var pattern1=/[bc]at/i; /*匹配第一个"[bc]at",不区分大小写*/ var pattern2=/\[bc\]at/i; /*匹配所有以"jpg"结尾的3个字符的组合,不区分大小写*/ var pattern3=/.jpg/gi; /*匹配所有以".jpg"结尾的3个字符的组合,不区分大小写*/ var pattern4=/\.jpg/gi;
正则表达式的方式:
- 以字面量形式来定义 var pattern1=/[bc]at/i;
- 使用RegExp构造函数 var pattern2=new RegExp("[bc]at","i");
RegExp构造函数,接受两个参数:一个是要匹配的字符串模式,另一个是可选的标志字符串
由于RegExp构造函数的模式参数是字符串,所以某些情况下要对字符进行双重转义.如\n(字符\在字符串中通常被转义为\\,而在正则表达式字符串中就会变成\\\/).
| 字面量模式 | RegExp构造函数 |
| /\[bc\]at/ | "\\[bc\\]at" |
| /\.at/ | "\\.at" |
| /name\/age/ | "name\\/age" |
| /\d.\d{1,2}/ | "\\d.\\d{1,2}" |
| /\w\\hello\\123/ | "\\w\\\\hello\\\\123" |

浙公网安备 33010602011771号