Javascript正则表达式匹配失败

时间:2012-11-20 11:04:44

标签: javascript regex match

有人可以解释为什么这不起作用? (我使用的是Chrome开发者控制台)

pattern  
-> "/Xmp\.MP\.RegionInfo\/MPRI:Regions/"
key
-> "Xmp.MP.RegionInfo/MPRI:Regions[1]"
key.search(pattern)
-> -1
key.search(/Xmp\.MP\.RegionInfo\/MPRI:Regions/)
-> -1
"Xmp.MP.RegionInfo/MPRI:Regions[1]".search(pat)
-> -1
"Xmp.MP.RegionInfo/MPRI:Regions[1]".search(/Xmp\.MP\.RegionInfo\/MPRI:Regions/)
-> 0

如果我使用变量,那对我来说绝对没有意义。

3 个答案:

答案 0 :(得分:2)

在第一个示例中看起来pattern是一个字符串,它必须是RegExp对象:

var pattern = /Xmp\.MP\.RegionInfo\/MPRI:Regions/
var key = "Xmp.MP.RegionInfo/MPRI:Regions[1]"

key.search(pattern); // equals 0

如果要将字符串转换为正则表达式,请使用RegExp构造函数(但删除斜杠):

var pattern = new RegExp("Xmp\.MP\.RegionInfo\/MPRI:Regions");

http://jsfiddle.net/CpEjA/

答案 1 :(得分:0)

在您的示例中,模式似乎是一个字符串。您需要它作为RegExp对象。

答案 2 :(得分:0)

在第一种情况下,您的模式用引号括起来,所以它是字符串。在第二种情况下,它没有引号 - >它是RegExp对象。