String.match()函数返回空,即使存在匹配
我想在一个文件中匹配的一些数据正则表达式,即使在比赛中的数据明显存在的匹配功能但是返回null。
我曾尝试在RegExr相同的数据和正则表达式,它显示匹配。
以下是代码
var fs = require('fs');
try {
var data = fs.readFileSync('File.txt', 'utf8');
data = data.toString();
var regex = /^(hi|hI|Hi|HI)\s[^dD].*?$/gm;
var result = data.match(regex);
} catch(e) {
console.log('Error:', e.stack);
}
而这些文件的内容
Hi Alex how are you doing
hI dave how are you doing
Good by Alex
hidden agenda
Alex greeted Martha by saying Hi Martha
我用RegExr相同的数据,它表明第一线为匹配。但是当我在我的机器上运行上面的代码,结果变量保持为空。
在那里,我失去了一些东西?
下面是一些屏幕截图,而我是在调试的vscode代码。
- 数据可变的内容
- 结果变量的状态。
- JSON.stringify 结果
编辑。 JSON.stringify结果
我跑CMD程序和惊人的字符串在它前面的空间。
回答如下:在JSON输出的空间似乎是BOM。如果是这样,data.codePointAt(0)
应该65279
。