javascript正则表达式不符合预期的字符串

时间:2013-10-04 15:19:28

标签: javascript regex

考虑到以下两个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被评估为真的原因吗?

2 个答案:

答案 0 :(得分:0)

\W匹配/但不匹配X,因为\W[^a-zA-Z0-9_]

答案 1 :(得分:0)

这是regex101.com调试器可以帮助您的地方:http://regex101.com/r/tK8cV1/#debugger

以下是输出的屏幕截图:http://imgur.com/e7AIfvX

这将向您显示正确的正则表达式的匹配方式。然而,这是使用PCRE运行的,但对于您的应用程序仍然不那么准确。

我希望这会有所帮助。