0

なぜこれが機能しないのか誰かが説明できますか?(私はChrome Developer Consoleを使用しています)

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:06:47.317 に答える
0

最初のケースでは、パターンは引用符で囲まれているため、文字列です。2番目のケースでは、引用符なし->RegExpオブジェクトです。

于 2012-11-20T11:07:55.640 に答える