0

我今天正在学习正则表达式的介绍,我在 SO 上看到了这篇文章

为了测试这些模式:/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

4

1 回答 1

1

/当您从字面上使用正则表达式时充当分隔符..

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

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

在字符串文字中使用时不需要转义它

于 2013-07-03T05:50:13.827 回答