Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于在操作数具有十进制数时防止逗号分隔符的正则表达式_Javascript_Regex - Fatal编程技术网

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))