我可以使用javascript正则表达式来计算字符串中第一个文本字符之前的空白字符数量吗?我只在乎是否有0,1和2+。JavaScript正则表达式来计算空白字符
我目前的工作解决方案是有三个正则表达式,只是使用匹配来确定0,1或2+类别(每个单独的模式),但我寻找一个更优雅的解决方案。
它甚至有可能使用正则表达式来计算模式吗?我可以使用非贪婪分组和计数我猜的长度....
我可以使用javascript正则表达式来计算字符串中第一个文本字符之前的空白字符数量吗?我只在乎是否有0,1和2+。JavaScript正则表达式来计算空白字符
我目前的工作解决方案是有三个正则表达式,只是使用匹配来确定0,1或2+类别(每个单独的模式),但我寻找一个更优雅的解决方案。
它甚至有可能使用正则表达式来计算模式吗?我可以使用非贪婪分组和计数我猜的长度....
" a".match(/^\s{0,2}/)[0].length
此正则表达式0和2之间的空白字符在字符串开始处匹配。
为什么不''theString.match(/^\ s + /)[0] .length' - OP意味着,我认为2+意味着两个或更多,尽管它是奇怪的措辞。 –
@射线:这听起来像只有三个类别。 – SLaks
正确,只有三个类别:0,1或2+。我还需要获得领先的空白之后的所有内容,例如java trim。 – hvgotcodes
我不知道我会在现实生活中使用正则表达式这项工作,但你可以匹配他们在捕获和看到他们的长度:
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);
}
为什么不只用一个捕获组,检查长度:
<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或者其他,并且作用于字符串的其余部分。
您应该将正则表达式视为工具它们并不是整个工具箱中的。
您可以在字符串 中找到第一个非空格字符的索引,它与前导空格字符的数量相同。
t.search(/\S/);
如果你坚持,你可以限制与Math.min(t.search(/\S/), 2);
返回0,1或2如果没有非空格字符的回报将是-1 ....
2+是指两个还是更多?是否有意为每种类型的字符串生成计数? –