如何使用正则表达式确定标头级别(JavaScript)

时间:2018-06-28 19:46:27

标签: javascript node.js regex markdown

我正在使用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

1 个答案:

答案 0 :(得分:0)

您要问的是,该行是否包含(至少)一个带有此正则表达式的#,这两个行都包含。您可以使用否定的前瞻:

^#(?!#)

^的意思是“行首”,然后是字面的井号,然后是负{a,形式为(?!pattern),因此我们期待看到另一个井号。 / p>

更简单的方法是测试初始#和后面的空格\s

^#\s