Javascript 如何将字符串中的数字分成四个字符块

Javascript 如何将字符串中的数字分成四个字符块,javascript,Javascript,考虑到ccnum是一个16个字符的字符串,只包含数字(信用卡号),我想用4位数字一次很好地格式化该字符串,并用空格分隔。我试过这个: ccnum=ccnum.substring(0, 4)+' '+ ccnum.substring(4, 4)+' '+ ccnum.substring(8, 4)+' '+ ccnum.substring(12, 4); 但我得到了不可预测的结果,例如: 12341234 1234 1234 1234 1234 1234123

考虑到ccnum是一个16个字符的字符串,只包含数字(信用卡号),我想用4位数字一次很好地格式化该字符串,并用空格分隔。我试过这个:

ccnum=ccnum.substring(0, 4)+' '+
      ccnum.substring(4, 4)+' '+
      ccnum.substring(8, 4)+' '+
      ccnum.substring(12, 4);
但我得到了不可预测的结果,例如:

12341234 1234 1234
1234 1234 12341234

不知道为什么?

使用
substr
而不是
substring

试试这个

var ccnum = '123456789123456';

ccnum.substr(0, 4)+' '+ccnum.substr(4, 4)+' '+ccnum.substr(8, 4)+' '+ccnum.substr(12, 4);

使用
substr
而不是
substring

试试这个

var ccnum = '123456789123456';

ccnum.substr(0, 4)+' '+ccnum.substr(4, 4)+' '+ccnum.substr(8, 4)+' '+ccnum.substr(12, 4);
结果

["1111", "2222", "3333", "4444"]
结果

["1111", "2222", "3333", "4444"]
您可以将JavaScript与简单的正则表达式一起使用,以获得所需的内容

match()方法在将字符串与正则表达式匹配时检索匹配项

正则表达式
/\d{4}/g
正在搜索数字字符(
\d
)。其中四个(
{4}
)。它希望找到所有匹配项,因此使用
g
标志进行全局搜索

之后,我将使用来连接每个匹配的元素,并使用空格字符作为分隔符

join()方法将数组的所有元素连接到一个字符串中

您可以将JavaScript与简单的正则表达式一起使用,以获得所需的内容

match()方法在将字符串与正则表达式匹配时检索匹配项

正则表达式
/\d{4}/g
正在搜索数字字符(
\d
)。其中四个(
{4}
)。它希望找到所有匹配项,因此使用
g
标志进行全局搜索

之后,我将使用来连接每个匹配的元素,并使用空格字符作为分隔符

join()方法将数组的所有元素连接到一个字符串中

试试这个

试试这个

你弄糊涂了

substring()方法返回一个索引和另一个索引之间或字符串末尾的字符串子集

语法
str.substring(indexA[,indexB])

ccnum=ccnum.substring(0,4)+”+
ccnum.子串(4,8)+”+
ccnum.子串(8,12)+”+
ccnum.substring(12,16);

substr()方法返回从指定位置开始到指定字符数的字符串中的字符

语法
str.substr(开始[,长度])

ccnum=ccnum.substr(0,4)+”+
ccnum.substr(4,4)+”+
ccnum.substr(8,4)+”+
ccnum.substr(12,4);
您已经弄糊涂了

substring()方法返回一个索引和另一个索引之间或字符串末尾的字符串子集

语法
str.substring(indexA[,indexB])

ccnum=ccnum.substring(0,4)+”+
ccnum.子串(4,8)+”+
ccnum.子串(8,12)+”+
ccnum.substring(12,16);

substr()方法返回从指定位置开始到指定字符数的字符串中的字符

语法
str.substr(开始[,长度])

ccnum=ccnum.substr(0,4)+”+
ccnum.substr(4,4)+”+
ccnum.substr(8,4)+”+
ccnum.substr(12,4);

您的子字符串不是-您将其编码为
子字符串
函数拆分字符串并分配给同一变量,请查看我的答案以了解更多信息您的子字符串不是-您将其编码为
子字符串
函数拆分字符串并分配给同一变量,查看我的答案以了解更多信息假设这是用户提供的数据,我认为假设字符串只包含数字是不明智的。。。除非OP没有提到其他验证方法。如果您知道您正在搜索数字,我会说,最好明确定义您要搜索的内容。因为信用卡号是16位数字。是的,我正在做其他验证,以确保在进入此步骤之前有16位数字。假设这是用户提供的数据,我认为假设字符串只包含数字是不明智的。。。除非OP没有提到其他验证方法。如果您知道您正在搜索数字,我会说,最好明确定义您要搜索的内容。因为信用卡号是16位数字。是的,我正在进行其他验证,以确保在进入此步骤之前有16位数字。
"1111222233334444".match(/.{1,4}/g).join(" ");