当前位置:  开发笔记 > 编程语言 > 正文

为什么匹配的子字符串在JavaScript中返回"undefined"?

如何解决《为什么匹配的子字符串在JavaScript中返回"undefined"?》经验,为你挑选了1个好方法。

我今天在JavaScript中使用正则表达式时遇到了一种奇怪的行为(Windows Vista上的Firefox 3).

var str = "format_%A";
var format = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(str);

console.log(format);    // ["format_%A", "%A"]
console.log(format[0]); // "format_undefined"
console.log(format[1]); // Undefined

正则表达式没有错.如您所见,它与第一次console.log调用中的正确部分相匹配.

Internet Explorer 7和Chrome都按预期运行:format[1]返回"%A" (好吧,Internet Explorer 7做正确的事情有点出乎意料......)

这是Firefox中的一个错误,还是我不知道的一些"功能"?



1> Rene Saarsoo..:

这是因为console.log()的工作方式与printf()类似.console.log()的第一个参数实际上是一个格式字符串,可以跟随其他参数.%A是占位符.例如:

console.log("My name is %A", "John"); // My name is "John"

有关详细信息,请参阅console.log()文档.%A和任何其他未记录的占位符似乎与%o相同.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有