我看到一些非常奇怪的行为,用我正在编写的一个小脚本(并与Node v6一起运行)。如果我在脚本中放置了下面一行,比如index.js
console.log((/autonom.*/ig).test('autonomy'))和node index.js一起运行,我看到false了。出乎意料!
更奇怪的是,如果我用node打开一个交互式shell,然后运行:
> (/autonom.*/ig).test('autonomy')
true我得到了true,就像预期的那样。有什么理由让脚本中的代码与repl中的代码产生不同的效果?
编辑,,regex,没有什么真正的理由,有一点点香料。我也看到了同样的行为,即使是琐碎的:
console.log((/^autonomy$/).test('autonomy'))编辑情节变得非常复杂:
console.log((/autonom\S*/i).test('autonomy'))
console.log((/autonom\S*/i).test('autonomy'))带有此文件的node index.js打印:
true
false发布于 2016-11-10 16:03:26
我终于找到了问题的根源,并认为我应该分享一个问题的答案!
为什么Node在这种情况下会表现得很奇怪?
问题在于我把原来的字符串从哪里拿来的--碰巧是从PDF文章中复制和粘贴的。让我们以字符串“自主性”为例。
在我的编辑“原子”( Atom )中,这看上去就像‘自主性’。就像我把它贴在原来的问题上一样。
但是,如果我将编辑器中的one作为十六进制缓冲区输出,我会看到:
6175746f6e6f6d01比较而言,如果手动输入字符串“自主性”,则为:
6175746f6e6f6d问题就在这里。它对你们所有人都有效的原因,以及它在REPL中对我起作用的原因,是我粘贴它的大部分地方(所以,bash,.)不理解/抛出最后的01,让您看到“适当的”字符串‘自主性’的外观。
ASCII字符01是SOH: Start of Header。耸耸肩!
https://stackoverflow.com/questions/40512096
复制相似问题