,,,,
JavaScript高级程序设计(第三版)笔记——第五章regexp类型
,
<人力资源/>,
<强> 强>
<强> 强>
ver expression =,/模式/旗帜;
模式:可以是任何简单或者复杂的正则表达式
标记:
g:表示全局
我:表示不区分大小写
m:表示多行模式,在到达一行的末尾时还会继续查找下一行
var patterns1 =,//g;//匹配字符中所有“在”的实例var patterns2 =,/在/我(bc);//匹配所有的“蝙蝠”或“猫”,不区分大小写var patterns3 =,/悲伤/gi;//匹配所有的以“在”结尾的三个字符的组合,不区分大小写
模式中使用的所有元字符都必须转义,正则表达式中的元字符包括:([{\ ^ $ |)?* +。]}
<>以前var patterns4 =,/我/\[公元前\];//匹配第一个“(bc)”,不区分大小写<强> 强>
,
var patterns2 =, new 正则表达式(“(bc)”,“我”);//与var patterns2 =,/(bc)/我;相同
,
同样使用RegExp同样也要对元字符进行转义而且是双重转义
vqr pattterns4 =, new 正则表达式(“\ \[公元前\ \]”,“我”);与var patterns4 =,/我/\[公元前\];相同
这两种方法创建的正则表达式不一样。正则表达式字面量会始终共享一个RegExp实例,而使用构造函数创建的每一个新RegExp实例都是一个新实例
var re =,空, ,,,,,,,,,,,我,,,,,,,,,,(i=0; i<10;我+ +){//只为/猫/创建了一个RegExp实例,第一次调用成功,第二是失败,因为当第二次调用时是从索引值为3的字符开始的,所以找不到他,当第三次调用时又会从开头开始。 ,,,,,,,,,,,re =,/猫/g; ,,,,,,,,,,,师(“catgghi”); ,,,,,,,},,,,,,,,,(i=0; i<10;我+ +){//用RegExp构造函数在每次循环中都会创建正则表达式,所以每次调测试()都用会返回现实 ,,,,,,,,,,,re =, new 正则表达式(“猫”,“g”); ,,,,,,,,,,,师(“catgghi”); ,,,,,,,}
,
<强> 强>
<人力资源/>,
全球:是否设置了g标志
ignoreCase:是否设置了我标志
多行:是否设置了米标志
lastIndex:表示开始搜索下一个匹配项的字符位置,从0算起
来源:正则表达式的字符串表示
var patterns2 =,/我/\[公元前\]; 警报(patterns2.global);,,//falsealert (patterns2.source);,//盶[公元前\]在“
<强> 强>
<人力资源/>,
<强> RegExp对象的主要方法是exec() >强,专门为捕获组设计的,接受一个参数,返回包含匹配项信息的数组,相对于数组的实例,多了两个属性指数和输入,在数组中,第一项是匹配的字符串,其他项是与模式中的捕获组匹配的字符串。
,
输入:表示应用正则表达式的字符串
指数:表示匹配项在字符串中的位置
var text =,“mom 以及dad 以及宝贝”;var pattern =,/mom (以及dad (以及婴儿)?)?/gi; var matches =, pattern.exec(文本); 警报(matches.index);,//0;警报(matches.input);,//癿om 以及dad 以及宝贝”警报(匹配[0]);,//癿om 以及dad 以及宝贝”警报(匹配[1]);,//币约癲ad 以及宝贝”警报(匹配[2]);,//耙约氨Ρ础?/pre>
对于exec()方法,设置了全局标志(g),每次也只会返回一个匹配项。不设置全局标志的情况下,在同一个字符串上调用它是将始终返回第一个匹配项信息,设置了(g),每次调用它时都会在字符串中继续查找。
var text =,“蝙蝠猫,,,,,,胖”;var pattern1 =,//必备;var matches =, pattern1.exex(文本); 警报(matches.index);,//0警报(匹配[0]);,//catalert (pattern1.lastIndex);//0=,,matches  pattern1.exex(文本); 警报(matches.index);,//0警报(匹配[0]);,//catalert (pattern1.lastIndex);,//0 var pattern2 =,//g必备;var matches =, pattern2.exex(文本); 警报(matches.index);,//0警报(匹配[0]);,//catalert (pattern1.lastIndex);,//3 matches =, pattern1.exex(文本); 警报(matches.index);,//5警报(匹配[0]);,//batalert (pattern1.lastIndex);,//8引用类型regexp类型