我今天正在学习正则表达式的介绍,我在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 )
答案 0 :(得分:1)
/
在字面上使用正则表达式时充当分隔符。
所以,你需要转义它\/
。你的正则表达式是
/([^\/]+)\/([0-9]+)(?:\/([^\/]+))?")/.test(a)
在字符串文字
中使用时,您无需转义它