Javascript 如何编写reg表达式以特定格式替换价格值
我想使用正则表达式来表示具有特定格式的值。 例如,如果用户将“1”写入输入框,则必须将其替换为“$1” 示例:Javascript 如何编写reg表达式以特定格式替换价格值,javascript,regex,Javascript,Regex,我想使用正则表达式来表示具有特定格式的值。 例如,如果用户将“1”写入输入框,则必须将其替换为“$1” 示例: 1234->1234美元 1234.5->1234.5美元 0.31->0.31美元 3.01->3.01美元 我就这样试过了 formatNumber = (n) => { console.log(n); return n.toString().replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
- 1234->1234美元
- 1234.5->1234.5美元
- 0.31->0.31美元
- 3.01->3.01美元
formatNumber = (n) => {
console.log(n);
return n.toString().replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
handleUserInput = (e) => {
const name = e.target.name
const value = e.target.value
this.setState({ [name]: value });
let errors = this.state.errors;
e.target.value = '$' + this.formatNumber(value);
}
它适用于整数值,但不适用于十进制值。
我真的很感谢你的帮助。谢谢。第一次替换
.replace(/\D/g,“”)
您也在删除点。如果要保留点,可以使用[^\d.]+
而不是\d
比如说
formatNumber=(n)=>{
返回n.toString()
.替换(/[^\d.]+/g,”)
.替换(/\B(?=(\d{3})+(?!\d))/g,“,”;
};
[
1234,
1234.5,
0.31,
3.01
].forEach(s=>console.log(formatNumber))代码>您可以执行以下操作:
const formatNumber=n=>{
常数[a,…rest]=n.toString()
常数m=
rest.toString()。长度%3==0?
休息
.toString()
.替换(/\D/g,“”)
.replace(/\d{3}/g,n=>`${n}.`):
rest.toString()替换(/\D/g,“”)
返回`${a},${m}`
}
控制台日志(格式编号(1234.5))
控制台日志(格式编号(1234))
log(formatNumber(0.31))
尝试使用以下函数。我认为这对你有帮助
function addCommas(nStr)
{
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return '$'+ x1 + x2;
}
您正在删除包括点在内的所有非数字。您可以省略此部分以保留点。替换(/\D/g,“”)