在研究javascript中正则表达式的使用时,可以遇到两种类型的示例:
A:
var regex = /^[a-zA-Z0-9]+$/;
B:
var regex = new RegExp ("^[a-zA-Z0-9]*$");
是否有必要使用var foo = new RegExp
?或者,何时应该选择每种方法?
答案 0 :(得分:6)
当您必须在运行时动态组装正则表达式时,RegExp()
构造函数很有用。如果表达式是完全静态的,则使用本机正则表达式语法(“A”)更容易。原生语法的易用性源于这样一个事实:您不必担心引用反斜杠,就像正则表达式以字符串常量开始一样。
答案 1 :(得分:1)
是否有必要使用
var foo = new RegExp
?
不,显然不是。另一个也可以。
或者,何时应该选择每种方法?
Regex literals更容易读写,因为你不需要字符串转义正则表达式转义字符 - 你可以使用它们(反斜杠,引号)。此外,它们在脚本“编译”期间仅被解析一次 - 每次评估行时都不需要执行任何操作。
如果要动态构建正则表达式,则只需要使用RegExp
constructor。
答案 2 :(得分:1)
以下是“动态”正则表达式的示例,您可能需要new RegExp
。
var search = 'dog',
re = new RegExp('.*' + search + '.*');
如果它是一个静态正则表达式,那么文字语法(你的A选项)更好,因为它更容易编写和读取。