正则表达式用作构造函数,而不是文字

时间:2013-07-03 05:47:22

标签: javascript regex

我今天正在学习正则表达式的介绍,我在SO

上遇到了this post

测试这些模式:/video/123/slug/video/123,给出了这个正则表达式:

([^/]+)/([0-9]+)(?:/([^/]+))?

我基本上理解它是如何工作的,然而,只有当我把它放在构造函数正则表达式中它才有效:

var test1 = new RegExp("([^/]+)/([0-9]+)(?:/([^/]+))?"),
a = "/video/123/slug",
b = "/video/123";
console.log(test1.test(a)); //true

但这样做真的失败了:

/([^/]+)/([0-9]+)(?:/([^/]+))?")/.test(a) // all sorts of warnings and an error: Uncaught SyntaxError: Unexpected token ) 

这是为什么? http://jsbin.com/idegal/1/edit

1 个答案:

答案 0 :(得分:1)

/在字面上使用正则表达式时充当分隔符。

所以,你需要转义它\/。你的正则表达式是

  /([^\/]+)\/([0-9]+)(?:\/([^\/]+))?")/.test(a)

在字符串文字

中使用时,您无需转义它