次の 2 つの JavaScript コードのスニペットを考慮すると、t1 と t2 の両方が false と評価されることが予想されます。
var p1 = /^\W*(Port )?(\d+)((X\d+)+)\W*$/
var t1 = p1.test("1X2X")
var m1 = p1.exec("1X2X") // return null (as expected)
var p2 = /^\W*(Port )?(\d+)((\/\d+)+)\W*$/
var t2 = p2.test("1/2/")
var m2 = p2.exec("1/2/") // return ["1/2/", undefined, "1", "/2", "/2"]
しかし、Firefox (17.0) でコードを実行すると、t1 は (予想どおり) false と評価されますが、t2 は true と評価されます。t2 が true と評価される理由について、誰かが光を当てることができますか?