2007年12月17日 星期一

关于正则表达式的两个方法比较

正则对象有两种创建方法:

  1. re = new RegExp("pattern",["flags"]);
  2. re = /pattern/[flags];
第一种灵活一些,可以在pattern中使用变量;而第二种方便一些,不用new,直接可以使用,这对于编写紧凑的js代码十分有用。
一定要注意手册中的一句说明:
"不要将正则表达式对象跟全局 RegExp 对象混淆。尽管听起来像是一回事,但它们是截然不同的。正则表达式对象的属性只包含一个正则表达式的信息,而全局 RegExp 对象的属性包含了不断更新的每一个匹配出现的信息。"
上面的信息非常重要。下面谈谈两个查询方法,match和exec。
由于两个方法是不同对象的方法(match属于String对象;exec属于RegExp对象),因此将使用不同的语句来执行,分别是:
  • a = String.match("pattern",[flag]);
  • b = pattern.exec(String,[flag]);
a与b是不同类型的对象。
  • a是数组,结果如:[0...n],取值使用a[0],a[1],...a[n];
  • b是一个对象,结果如:{$1,$2,...$9},取值采用b.$1,b.$2,...b.$9。

0 条评论:

发表评论