Chrome 是否正确处理匹配?
我的理解是,可以使用两种方法之一在 JavaScript 中进行不区分大小写的基于正则表达式的匹配: match(/pattern/i)
或 match("pattern","i")
。不过,我没有让第二种变体在 Chrome 中工作。 (我使用的是 Chromium 14.0.835.202)。这是 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>
My understanding is that one can use either of the two methods for case-insensitive regex based matches in JavaScript: match(/pattern/i)
or match("pattern","i")
. I'm not getting the second variation to work in Chrome though. (I'm using Chromium 14.0.835.202). Is this a bug in Chrome? (or a user error?)
In Firefox when I run this code I get: Hello World and then Hello World. In Chrome I get Hello World, undefined.
<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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,这不是一个错误。 Firefox 允许在
String.match
中使用flags
参数,但正如 Mozilla 文档中所述(或者更确切地说,正如它曾经注意到 - 此功能甚至不再提及)它是非标准的,并且应该避免。而且,它通常效率较低。如果您需要此功能,请改用
new RegExp
。No, it's not a bug. Firefox allows the use of the
flags
parameter inString.match
, but as noted on the Mozilla Documentation (or rather, as it used to be noted - this functionality is no longer even mentioned) it's nonstandard and should be avoided. Also, it's usually less efficient.If you need this functionality, use
new RegExp
instead.