0

有人可以解释为什么这不起作用吗?(我正在使用 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

如果我使用变量,搜索不匹配对我来说绝对没有意义....

4

3 回答 3

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/

于 2012-11-20T11:06:39.777 回答
0

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

于 2012-11-20T11:07:55.640 回答
0

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

于 2012-11-20T11:06:47.317 回答