【发布时间】:2017-03-23 13:34:57
【问题描述】:
我正在编写一个小脚本(并使用 Node v6 运行),我看到一些非常奇怪的行为。如果我将以下行放在脚本中,请说 index.js:
console.log((/autonom.*/ig).test('autonomy'))
并使用node index.js 运行它,我看到的是false。没想到!
更奇怪的是,如果我用 node 打开一个交互式 shell,然后运行:
> (/autonom.*/ig).test('autonomy')
true
正如预期的那样,我收到了true。脚本中的代码与 repl 中的代码有什么不同的效果吗?
编辑 正则表达式没有真正的原因有一点香料。即使是微不足道的,我也看到了相同的行为:
console.log((/^autonomy$/).test('autonomy'))
编辑情节大大加厚:
console.log((/autonom\S*/i).test('autonomy'))
console.log((/autonom\S*/i).test('autonomy'))
node index.js 打印此文件:
true
false
【问题讨论】:
-
删除
g修饰符。console.log(/autonom.*/i.test('autonomy'))。见stackoverflow.com/questions/1520800/… -
@WiktorStribiżew 不高兴:甚至 console.log((/^autonomy$/).test('autonomy')) 打印错误......
-
注意括号 -
console.log(/autonom.*/i.test('autonomy')) -
所有示例在脚本和 repl 中都返回 true(至少对于节点 v6.9.1)。
-
两者都为我返回
true.. Node v7.1.0 ,您是否有任何第三方模块与脚本版本一起加载?哦,Chrome 也返回 true,以完成循环.. :)
标签: javascript regex node.js