猿问

每“n”个字符添加空格后,如果第一个字符为零,则不计算

我在js中有这段代码。它改变了我的输入值。它删除所有空格,然后在每隔一个字符后添加一个空格。

var value = $(input).val().replace(/(\s)/g, '').replace(/(\d{2})/g, '$1 ');

1234变成12 34

1234568790 进入 12 34 56 78 90

该代码运行良好。我的问题是 - 我不知道如何排除零,但前提是它排在第一位。

例如我想要这个

011111 变成 011 11 1

0000000 变成 000 00 00

01234568790 进入 012 34 56 78 90

111000 进入 11 10 00

012034000 进入 012 03 40 00

输入可以比我的例子更长。(我将使用更多字符,但现在只能想象数字)

如何编辑我的正则表达式?(我知道如何在没有正则表达式的情况下做到这一点)


红颜莎娜
浏览 180回答 3
3回答

海绵宝宝撒

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

胡说叔叔

您可以只包含一个替代检查,如果字符串以零开头以在前 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

一只萌萌小番薯

(0?..)(..)*(.)?这个正则表达式首先选择匹配 0,后面还有 2 个字符,然后匹配尽可能多的长度为 2 的组,然后匹配长度为 1 的可选匹配。然后您可以遍历匹配并添加一个每一个后的空间。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答