虽然研究在JavaScript中使用正则表达式,一个可能遇到的例子有两种类型:是否需要使用var foo = new RegExp?
答:
var regex = /^[a-zA-Z0-9]+$/;
B:
var regex = new RegExp ("^[a-zA-Z0-9]*$");
是否有必要使用var foo = new RegExp
?或者,什么时候应该选择每种方法?
虽然研究在JavaScript中使用正则表达式,一个可能遇到的例子有两种类型:是否需要使用var foo = new RegExp?
答:
var regex = /^[a-zA-Z0-9]+$/;
B:
var regex = new RegExp ("^[a-zA-Z0-9]*$");
是否有必要使用var foo = new RegExp
?或者,什么时候应该选择每种方法?
当您必须在运行时动态组装正则表达式时,RegExp()
构造函数非常有用。如果表达式是完全静态的,则使用本地正则表达式语法(您的“A”)更容易。本地语法的易用性源于这样一个事实,即您不必担心引用反斜杠,就像您在正则表达式开始生成字符串常量时一样。
是否需要使用
var foo = new RegExp
?
不,显然不是。另一个也适用。
或者,何时应该选择每种方法?
Regex literals更容易读写,你不需要字符串转义正则表达式的转义字符 - 你可以用它们(反斜杠,行情)。而且,它们在脚本“编译”期间仅被解析一次 - 每次评估该行时都不需要执行任何操作。如果您想动态构建正则表达式,只需要使用RegExp
constructor。
下面是一个'动态'正则表达式的例子,您可能需要new RegExp
。
var search = 'dog',
re = new RegExp('.*' + search + '.*');
如果它是一个静态的正则表达式,则文本语法(您的A选项)是更好,因为它更容易编写和阅读。
@JamesMontagne我猜我的问题更基本.. – Roy 2013-02-21 19:44:22