1

在研究 javascript 中正则表达式的使用时,可以遇到两种类型的示例:

A:

var regex = /^[a-zA-Z0-9]+$/;

乙:

var regex = new RegExp ("^[a-zA-Z0-9]*$"); 

有必要使用var foo = new RegExp吗?或者,什么时候应该选择每种方法?

4

3 回答 3

6

RegExp()您必须在运行时动态组装正则表达式时,构造函数很有用。如果表达式是完全静态的,则使用本机正则表达式语法(您的“A”)更容易。本机语法的易用性源于您不必担心引用反斜杠这一事实,就像您在正则表达式开始作为字符串常量时所做的那样。

于 2013-02-21T19:41:28.133 回答
1

有必要使用var foo = new RegExp吗?

不,显然不是。另一个也有效。

或者,什么时候应该选择每种方法?

正则表达式文字更易于阅读和编写,因为您不需要对正则表达式转义字符进行字符串转义 - 您可以只使用它们(反斜杠、引号)。此外,它们仅在脚本“编译”期间被解析一次 - 每次评估该行时都不需要执行任何操作。

仅当您想动态构建正则表达式时才需要使用RegExp构造函数。

于 2013-02-21T19:42:27.643 回答
1

这是您可能需要的“动态”正则表达式示例new RegExp

var search = 'dog',
    re = new RegExp('.*' + search + '.*');

如果它是静态正则表达式,那么文字语法(您的 A 选项)会更好,因为它更易于编写和阅读。

于 2013-02-21T19:50:38.410 回答