如何在javascript中计算字符串中的空行

And*_* SK 3 javascript regex arrays newline

我正在尝试计算字符串中的所有空行。我目前的功能类型的作品:

function count_empty(text) {
    var regex = /\r\n?|\n/g;
    var lines = text.split(regex);
    var sep = [];
    $.each(lines, function(k, val) {
        if(!val) {
            //sentence
            sep.push(val);
        }
    });
    return sep.length;
}
Run Code Online (Sandbox Code Playgroud)

...但我真的认为它可以通过更好的方法来实现:

function count_empty(text) {
    return (text.match(/\r\n?|\n/g) || []).length;
}
Run Code Online (Sandbox Code Playgroud)

当然,应该修改第二个替代方案中的正则表达式以实际完成要求。所以,问题是:我应该在第二种方法中使用什么正则表达式来仅检索空行?

一个考虑:如果一行仅包含空格,它将被视为空行。

此文本区域的字符串应随函数返回 3。

<textarea id="test">first line

third line


</textarea>
Run Code Online (Sandbox Code Playgroud)

谢谢!

Gio*_*rje 5

如果m为正则表达式启用多行模式 , ,则可以匹配空行^$, 并计算找到了多少匹配项。请注意,[ \t]*将匹配零个或多个空格或制表符。

function count_lines(text){
    return text ? (text.match(/^[ \t]*$/gm) || []).length : 0;
}
Run Code Online (Sandbox Code Playgroud)

这应该非常快,因为不需要在正则表达式之后进行后处理。

有关带注释的演示,请参阅Regex101