Javascript regex计算空白字符

javascript regex to count whitespace characters

本文关键字:字符 空白 计算 regex Javascript      更新时间:2023-09-26

我可以使用javascript regex来计算字符串中第一个文本字符之前的空白字符数吗?我只关心是否有0 1和2+

我目前的工作解决方案是有三个正则表达式,只是使用匹配来确定0,1,或2+类别(每个单独的模式),但我正在寻找一个更优雅的解决方案。

是甚至可能计数模式与regex?我可以使用非贪婪分组并计算长度....

"     a".match(/^'s{0,2}/)[0].length

此正则表达式匹配字符串开头的0到2个空白字符。

你可以这样做:

"   aaa".replace(/^('s*).*$/,"$1").length

我不确定我会在现实生活中使用正则表达式来完成这项工作,但是您可以在捕获中匹配它们并查看它们的长度:

function countLeadingSpaces(str) {
    return(str.match(/^('s*)/)[1].length;
}

一种为速度而设计的非正则表达式方式(几乎任何东西都比正则表达式快):

function countLeadingSpaces2(str) {
    for (var i = 0; i < str.length; i++) {
        if (str[i] != " " && str[i] != "'t") {
            return(i);
        }
    }
    return(str.length);
}

您可以找到字符串中第一个非空格字符的索引,这与前导空白字符的数目相同。

t.search(/'S/);

如果你坚持,你可以限制返回0,1或2与Math.min(t.search(/'S/), 2);

如果没有非空格字符,则返回-1....

这应该可以完成工作:

string.split(/[^ 't'r'n]/)[0].length;

示例:http://jsfiddle.net/Nc3SS/1/

为什么直接使用捕获组并检查长度:

<html>
    <head>
    </head>
    <body>
        <script language="javascript">
            var myStr = "  hello";
            var myRe = /^('s*)(.*)$/;
            var match = myRe.exec(myStr);
            alert(match[1].length);  // gives 2
            alert(match[2]);         // gives "hello"
        </script>
    </body>
</html

后面的代码可以作用于三种情况,长度为0、1或其他,并作用于字符串的其余部分。

您应该将正则表达式视为工具,而不是作为一个完整的工具箱