我正在使用Node.js读取我从客户那里获得的工作场所订单的减价文件。我将文件分成几行,并在每行上执行检查以查看它是什么(h1,h3,任务等),但是让RegExps正常工作遇到很多麻烦。这是我到目前为止的代码:
var filesystem = require('fs');
let content;
let missingItems = [];
filesystem.readFile('orders.md', 'utf8', (err, res) => {
let content = res;
let lines = content.split('\n');
lines.forEach(line => {
if(line.match(/#{1}/)){
console.log('Store Name: ', line);
};
});
});
但是,此代码返回所有h1和h3行。我看到在线使用RegExp 101,问题是我的RegExp被h3行匹配了3次,而h1行被匹配了一次。
如何编写对h1和h3行均不返回true的正则表达式?我不明白为什么当我明确地说match {1}(ONCE)
时,这匹配3次这是我一直在测试我的表达式的测试领域,以及一些我要针对的测试示例文本:RegExp101
答案 0 :(得分:0)
您要问的是,该行是否包含(至少)一个带有此正则表达式的#,这两个行都包含。您可以使用否定的前瞻:
^#(?!#)
^
的意思是“行首”,然后是字面的井号,然后是负{a,形式为(?!pattern)
,因此我们期待看到另一个井号。 / p>
更简单的方法是测试初始#和后面的空格\s
:
^#\s