2011-11-13 9 views
1

JavaScriptで正規表現ベースの大文字と小文字を区別するための2つの方法(match(/pattern/i)またはmatch("pattern","i"))のいずれかを使用できます。私は2番目のバリエーションがChromeで動作するようにはなっていません。 (私はChromium 14.0.835.202を使用しています)。これはChromeのバグですか? (またはユーザーエラー?)Chromeのハンドルが正しく一致していますか?

Firefoxでこのコードを実行すると、Hello WorldとHello Worldが表示されます。 Chromeでは、Hello Worldを取得できません。

<html> 
<head> 
</head> 
<body> 

<input type="button" id="button" value="Click me!" onclick="buttonClick()" /> 

</body> 

<script language="javascript"> 
function buttonClick() 
{ 
    str="Hello World" 
    alert(str.match(/hello world/i)) 
    alert(str.match("hello world","i")) 
} 
</script> 
</html> 

答えて

6

いいえ、バグではありません。 Firefoxでは、String.matchflagsのパラメータを使用できますが、Mozillaドキュメントに記載されているように(あるいはと記載されています - this functionality is no longer even mentioned)、これは非標準的なものであり、避けるべきです。また、通常はそれほど効率が悪いです。

この機能が必要な場合は、代わりにnew RegExpを使用してください。

+2

[ECMAscript v5.1仕様](http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf)の145ページには、 '.match()' – jfriend00

+0

ありがとうございます。ちょうど私が必要なもの。 – snowguy

関連する問題