[英]How to count leading zeros?
我正在尝试制作一个正则表达式来计算以下格式的前导零: 01
、 001
和0001
。
这些是我需要以某种方式处理的一些 id。
我试过这样的事情:
id.split(/^0{1,3}/)
例如,如果我的输入是0001
,我希望看到这样的内容:
['0', '0', '0']
但我得到了这个:
["", "1"]
我只关心前导零,我无法计算在我指定的格式之后的那些。
你可以在没有任何正则表达式的情况下拥有它:
let somenumber = "0001"; function count_leading_zeros(some_input) { let splitted = some_input.split(""); let i = 0; while (splitted.shift() == 0) { i += 1; } return i; } console.log(count_leading_zeros(somenumber));
使用匹配,这样你就可以得到零。 这样,您可以读取长度。 如果没有匹配,则返回 null。
var str = "0001"
var match = str.match(/^0+/)
var level = match ? match[0].length : 0
在一行中
var str = "0001"
var level = (str.match(/^0+/) || [''])[0].length
String#split
将字符串分成正则表达式匹配字符串部分的部分。 因此,您得到的结果是预期的, 001
与/^0{1,3}/
(前 1、2 或 3 个零)拆分时将产生一个空字符串(在字符串的开头)和1
。
您想使用始终匹配字符串开头任意数量的零的正则表达式:
console.log('001'.match(/^0*/)[0].length); // => 2 console.log('01'.match(/^0*/)[0].length); // => 1 console.log('1'.match(/^0*/)[0].length); // => 0
无需使用||
或任何类型的保护,因为/^0*/
始终匹配,字符串开头的任意数量的零( 0*
)( ^
)。
使用 lodash:
_.takeWhile(str, (c) => c === '0').length
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.