Javascript 每八位数字加逗号

Javascript 每八位数字加逗号,javascript,jquery,regex,Javascript,Jquery,Regex,考虑到以下输入: 123456781234567812345678 我正在努力实现以下目标: 12345678,12345678,12345678 目前完成这项工作的内容如下: parts = parts.replace(/\B(?=(\d{8})+(?!\d))/g, ","); 我遇到的问题是正则表达式从右向左读取。我已经创建了一个示例来显示这个问题。我得到的结果是这样的 123,45678910,12345678 最后,当我使用箭头键四处移动时,它会将我返回到输入的末尾 您可以使用

考虑到以下输入:

123456781234567812345678
我正在努力实现以下目标:

12345678,12345678,12345678
目前完成这项工作的内容如下:

parts = parts.replace(/\B(?=(\d{8})+(?!\d))/g, ",");
我遇到的问题是正则表达式从右向左读取。我已经创建了一个示例来显示这个问题。我得到的结果是这样的

123,45678910,12345678
最后,当我使用箭头键四处移动时,它会将我返回到输入的末尾


您可以使用下面基于负前瞻的正则表达式

alert('1234567881234567812345678122'。替换(/(\d{8})(?!$)/g,“$1”)
警报('1234567881234567812345678'。替换(/(\d{8})(?!$)/g,“$1”)
使用以及,您可以使用该代码实现您想要的:

$('.singleSpace').keyup(函数(){
var foo=this.value.replace(/\D/g',).replace(/(\D{8})(?!$)/g,“$1,”)
var carretPos=doGetCaretPosition(此)
carretPos+=foo.length-this.value.length
this.value=foo;
设置选择范围(此、carretPos、carretPos)
});
//代码取自
// https://stackoverflow.com/questions/17858174/set-cursor-to-specific-position-on-specific-line-in-a-textarea
功能设置选择范围(输入、选择开始、选择结束){
if(输入设置选择范围){
input.focus();
input.setSelectionRange(selectionStart,selectionEnd);
}
else if(input.createTextRange){
var range=input.createTextRange();
范围。塌陷(真);
range.moveEnd('character',selectionEnd);
range.moveStart('character',selectionStart);
range.select();
}
}
//代码取自
// https://stackoverflow.com/questions/2897155/get-cursor-position-in-characters-within-a-text-input-field
函数doGetCaretPosition(oField){
//初始化
var-iCaretPos=0;
//IE支持
if(文档选择){
//将焦点设置在元素上
oField.focus();
//要获取光标位置,请获取空的选择范围
var oSel=document.selection.createRange();
//将选择开始移动到0位置
oSel.moveStart('character',of ield.value.length);
//插入符号位置是选择长度
iCaretPos=oSel.text.length;
}
//Firefox支持
else if(oField.selectionStart | | oField.selectionStart==“0”)
iCaretPos=oField.selectionStart;
//返回结果
返回(iCaretPos);
}


您的输入和预期输出是什么?您实际上希望发生什么还不清楚。你想让它看起来像是123456789102345678吗?我添加了输入,很抱歉不清楚。