[英]javascript regex to count whitespace characters
我可以使用javascript正则表达式来计算字符串中第一个文本字符之前的空格字符数吗? 我只关心是否有0,1和2+。
我目前的工作解决方案是有三个正则表达式,只需使用匹配来确定0,1或2+类别(每个类别的单独模式),但我正在寻找更优雅的解决方案。
是否可以使用正则表达式计算模式? 我可以使用非贪婪的分组并计算我猜的长度....
" 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/);
如果您坚持,可以使用Math.min(t.search(/\\S/), 2);
将返回值限制为0,1或2 Math.min(t.search(/\\S/), 2);
如果没有非空格字符,则返回值为-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或其他,并作用于字符串的其余部分。
您应该将正则表达式视为工具 ,而不是整个工具箱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.