我有这个号码 1234567890
这就是我要显示的方式
1234 567 890
我正在尝试
console.log('1234567899'.replace(/(\d)(?=(\d{3})+$)/g, '$1 '));
答案 0 :(得分:2)
一个选择是拥有一个可选的组,该组从字符串的开头开始,并且(贪婪地)匹配您想要的前导位数而不带逗号。然后,不要只用\1
来代替,而要用\1\2
来代替(可选组 plus 第二个捕获的数字):
const format = str => str.replace(
/(^(?:\d{1,2}))?(\d{1,3})(?=(?:\d{3})+$)/g,
// ^^^ change these to change the number of unbroken leading digits
'$1$2 '
);
console.log(format('1234567899'));
console.log(format('01234567899'));
console.log(format('101234567899'));
以上代码段的可选组以\d{1,2}
开头,这意味着将有3到5个前导数字,并且用逗号分隔。要更改该数量,只需更改重复次数即可。
前导组(^(?:\d{1,2}))?
的意思是:可选地,字符串的开头,后跟一个或两个数字。
答案 1 :(得分:0)
您可以使用这种方式。
let number = '1234567890';
let result = number.replace(/(\d{4})(\d{3})(\d{3})/, "$1 $2 $3");
console.warn(result);
答案 2 :(得分:0)
尝试一下
var str = "1234567890";
var temp = str.substring(0,4); // get first 4 digits
//Add space after 3 digits. You can use same logic to add space after 4 digits as well
var z = [...str.substring(4)].map((d, i) => i % 3 == 0 ? ' '+d : d).join('').trim();
//Concatenate both strings
var result = temp + ' ' + z;
//Display result
console.log(temp);
console.log(z);
console.log(result);
答案 3 :(得分:0)
请尝试使用此正则表达式,以确保将数字分为三组,但第一个数字可以从四到五分组。
匹配/(^\d{4}|\d{3})(?=(\d{3})*$)/g
并替换为$1
这是一些示例javascript代码,
console.log('1234567899' + ' --> ' + '1234567899'.replace(/(^\d{4}|\d{3})(?=(\d{3})*$)/g, '$1 '));
console.log('12345678991' + ' --> ' + '12345678991'.replace(/(^\d{4}|\d{3})(?=(\d{3})*$)/g, '$1 '));
console.log('123456789912' + ' --> ' + '123456789912'.replace(/(^\d{4}|\d{3})(?=(\d{3})*$)/g, '$1 '));
console.log('1234567899123' + ' --> ' + '1234567899123'.replace(/(^\d{4}|\d{3})(?=(\d{3})*$)/g, '$1 '));