理解javascript正则表达式(3)

RegExp 实例继承 Object 的 toLocaleString() 和 toString() 方法都会返回正则表达式的字面量形式的字符串,与如何创建正则表达式的方式无关。 valueOf() 则返回正则表达式字面量本身。

var p=https://www.jb51.net/\[new\]bi/; p.toLocaleString();// "/\[new\]bi/" p.toString();// "/\[new\]bi/" p.valueOf();// /\[new\]bi/ var p=new RegExp('\\[new\\]bi'); p.toLocaleString();// "/\[new\]bi/" p.toString();// "/\[new\]bi/" p.valueOf();// /\[new\]bi/

RegExp的构造函数属性:

构造函数本身包含一些属性(静态属性),这些属性适用于作用域中的所有表达式,并且基于所执行的最近一次正则表达式操作而变化。有长属性名(如下代码)和短属性名(即$前缀形式,由于这些符号大多不是有效的ECMAScript标识符,所以不能直接在 RegExp 构造函数上以 "." 的方式访问,而要通过方括号语法来访问)两种方式访问这些属性

/(.)hort/g.exec('this is a short day');// ["short", "s"] //最近一次要匹配的字符串 RegExp.input;// "this is a short day" 或RegExp["$_"]访问; //最近一次的匹配项 RegExp.lastMatch;// "short" 或RegExp["$&"]访问; //在最近一次要匹配的字符串中的最近一次匹配项之前的文本 RegExp.leftContext;// "this is a " 或RegExp["$`"]访问; //在最近一次要匹配的字符串中的最近一次匹配项之后的文本 RegExp.rightContext;// " day" 或RegExp["$'"]访问; //最近一次(最后一次)匹配的捕获组 RegExp.lastParen;// "s" 或RegExp["$+"]访问;

捕获组访问属性:还有9个用于存储捕获组的构造函数属性,访问语法是 RegExp.$n ,其中n取值1~9,用于获取第n个匹配的捕获组。在调用 exec() , test() 或 match() 等正则系列方法时这些属性会被自动填充。

var text="this is a short summer"; var pattern =https://www.jb51.net/(..)or(.)/g; if(pattern.test(text)){ console.log(RegExp.$1); // sh console.log(RegExp.$2); // t }

模式的局限性:

缺少一些高级正则表达式的特性,如不支持向后查找,命名的捕获组(形如 \k<name> 引用之前名为 name 的捕获组的字符串)等。

推荐专题 《javascript正则表达式使用说明》

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgyfxf.html