Javascript 用于在操作数具有十进制数时防止逗号分隔符的正则表达式
我发现这个正则表达式函数为算术表达式添加了千个逗号分隔符Javascript 用于在操作数具有十进制数时防止逗号分隔符的正则表达式,javascript,regex,Javascript,Regex,我发现这个正则表达式函数为算术表达式添加了千个逗号分隔符 带逗号的函数编号(x){ 返回x.toString().replace(/\B(?=(\d{3})+(?!\d))/g,“,”; } console.log(带逗号的数字(“1000”);//好啊 console.log(带逗号的数字(“1000.03”);//好啊 console.log(带逗号的数字(“1000.03+2300”);//好啊 console.log(带逗号的数字(“1000.03+0.2300”);//不正常为此模式
带逗号的函数编号(x){
返回x.toString().replace(/\B(?=(\d{3})+(?!\d))/g,“,”;
}
console.log(带逗号的数字(“1000”);//好啊
console.log(带逗号的数字(“1000.03”);//好啊
console.log(带逗号的数字(“1000.03+2300”);//好啊
console.log(带逗号的数字(“1000.03+0.2300”);//不正常
为此模式使用toLocaleString
方法返回一个字符串,该字符串对语言敏感
这个数字的表示
var regex=/[+\-\*\/]/g;
带逗号的函数编号(x){
if(正则表达式测试(x)){
let sign=x.match(regex)[0];
返回x.split(符号).reduce((结果,val)=>{
返回结果+(结果=“”?“”:符号)+数字(val).toLocalString();
}, '');
}否则{
返回编号(x).toLocaleString()
}
}
console.log(带逗号(“1000”)的数字);
console.log(带逗号的编号(“1000.03”);
控制台日志(带逗号的编号(“1000.03+2300”);
console.log(带逗号的编号(“1000.03-0.2300”)代码>一个选项可以与回调函数一起使用,并匹配1+乘以零,后跟点和零
如果匹配,则在替换中返回,否则返回逗号
\b0+\.\d+(?:\.\d+)*|\B(?=(\d{3})+(?!\d))
带逗号的函数编号(x){
常量regex=/\b0+\.\d+(?:\.\d+*.\B(?=(\d{3})+(?!\d))/g;
返回x.toString().replace(regex,(m)=>m!==“”?m:“”,“”;
}
console.log(带逗号(“1000”)的数字);
console.log(带逗号的编号(“1000.03”);
控制台日志(带逗号的编号(“1000.03+2300”);
console.log(带逗号的数字(“1000.03+0.2300”)代码>您可能想在小数点后只省略逗号,如果是,请澄清。是的,我想在小数点后省略逗号,但我需要格式化整个表达式,而不仅仅是操作数。更改了解决方案。正在为表达式添加toLocaleString格式。数学运算符也可以是+、-、*、/@Steve。请在此处使用正则表达式来检测和拆分它<代码>正则表达式=/[+\-\*\/]/g;regex.test(x)
如果“0.”传入,它将变为0。如何将其保持为“0”?
\b0+\.\d+(?:\.\d+)*|\B(?=(\d{3})+(?!\d))