我有一个非常漂亮的工具underscore-cli,它在打印出帮助/使用信息时会出现最奇怪的行为。
在 usage() 函数中,我这样做是为了缩进文本块(例如,选项):
str.replace(/^/, " ");
这个正则表达式除了非常明显之外,还直接来自 TJ Hollowaychuk 的command.js代码。正则表达式是正确的。
然而,我在使用文本的中间插入了奇怪的空格。像这样:
命令: ... values 检索对象属性的所有值。 扩展 <object> 覆盖输入数据中的属性。 defaults <object> 填写输入数据中缺失的属性。 any <exp> 如果输入中的任何值使表达式为真,则返回“真”。表达式参数:(值、键、列表) all <exp> 如果输入中的所有值都使表达式为真,则返回“真”。表达式参数:(值、键、列表) isObject 如果输入数据是具有命名属性的对象,则返回“真” isArray 如果输入数据是数组,则返回 'true' isString 如果输入数据是字符串,则返回 'true' ...
99% 的可能性,这必须是 V8 中的错误。
任何人都知道为什么会发生这种情况,或者最简单的解决方法是什么?
是的,事实证明这是一个 V8 错误,确切地说是 1748。这是我在该工具中使用的解决方法:
str.replace(/(^|\n), "$1 ");