首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Node会在脚本中执行不同的regex匹配?

为什么Node会在脚本中执行不同的regex匹配?
EN

Stack Overflow用户
提问于 2016-11-09 16:49:51
回答 1查看 122关注 0票数 2

我看到一些非常奇怪的行为,用我正在编写的一个小脚本(并与Node v6一起运行)。如果我在脚本中放置了下面一行,比如index.js

代码语言:javascript
复制
console.log((/autonom.*/ig).test('autonomy'))

node index.js一起运行,我看到false了。出乎意料!

更奇怪的是,如果我用node打开一个交互式shell,然后运行:

代码语言:javascript
复制
> (/autonom.*/ig).test('autonomy')
true

我得到了true,就像预期的那样。有什么理由让脚本中的代码与repl中的代码产生不同的效果?

编辑,,regex,没有什么真正的理由,有一点点香料。我也看到了同样的行为,即使是琐碎的:

代码语言:javascript
复制
console.log((/^autonomy$/).test('autonomy'))

编辑情节变得非常复杂:

代码语言:javascript
复制
console.log((/autonom\S*/i).test('autonomy'))
console.log((/autonom\S*/i).test('autonomy'))

带有此文件的node index.js打印:

代码语言:javascript
复制
true
false
EN

回答 1

Stack Overflow用户

发布于 2016-11-10 16:03:26

我终于找到了问题的根源,并认为我应该分享一个问题的答案!

为什么Node在这种情况下会表现得很奇怪?

问题在于我把原来的字符串从哪里拿来的--碰巧是从PDF文章中复制和粘贴的。让我们以字符串“自主性”为例。

在我的编辑“原子”( Atom )中,这看上去就像‘自主性’。就像我把它贴在原来的问题上一样。

但是,如果我将编辑器中的one作为十六进制缓冲区输出,我会看到:

代码语言:javascript
复制
6175746f6e6f6d01

比较而言,如果手动输入字符串“自主性”,则为:

代码语言:javascript
复制
6175746f6e6f6d

问题就在这里。它对你们所有人都有效的原因,以及它在REPL中对我起作用的原因,是我粘贴它的大部分地方(所以,bash,.)不理解/抛出最后的01,让您看到“适当的”字符串‘自主性’的外观。

ASCII字符01SOH: Start of Header。耸耸肩!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40512096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档