考虑到以下两个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被评估为真的原因吗?
答案 0 :(得分:0)
\W
匹配/
但不匹配X
,因为\W
是[^a-zA-Z0-9_]
答案 1 :(得分:0)
这是regex101.com调试器可以帮助您的地方:http://regex101.com/r/tK8cV1/#debugger
以下是输出的屏幕截图:http://imgur.com/e7AIfvX
这将向您显示正确的正则表达式的匹配方式。然而,这是使用PCRE运行的,但对于您的应用程序仍然不那么准确。
我希望这会有所帮助。