今日、正規表現の紹介を勉強していて、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