3 回答

TA贡献1809条经验 获得超8个赞
如果您不必仅验证可以使用的数字的字符串
s.replace(/(?:^0)?.{2}(?!$)/g, '$& ')
请参阅正则表达式演示。
细节
(?:^0)?
-0
字符串开头的可选出现.{2}
- 除换行符以外的任何 2 个字符(?!$)
- 不在字符串的末尾。
该$&
替换字符串是整个匹配反向引用。
如果您需要先检查字符串,请使用if (/^\d+$/.test(str)) {...}
并应用此正则表达式。
JS演示:
var strs = ['1234568790', '012345', '0000000'];
for (var i = 0; i < strs.length; i++) {
console.log(strs[i].replace(/(?:^0)?\d{2}(?!$)/g, '$& '));
}

TA贡献1804条经验 获得超8个赞
您可以只包含一个替代检查,如果字符串以零开头以在前 3 位数字后拆分,否则拆分为 2 位数字。
let s = '01234568790';
s = s.replace(/\s/g, '').replace(/(^0\d{2}|\d{2})/g, '$1 ');
console.log(s);
// 012 34 56 87 90

TA贡献1795条经验 获得超7个赞
(0?..)(..)*(.)?
这个正则表达式首先选择匹配 0,后面还有 2 个字符,然后匹配尽可能多的长度为 2 的组,然后匹配长度为 1 的可选匹配。然后您可以遍历匹配并添加一个每一个后的空间。
添加回答
举报