[英]Format positive and negative decimal numbers with jquery and regex
我認為,我在下面的jsfiddle中發現了這段代碼,它非常好。 但是它不會格式化負數,而只會格式化正數。 我試圖對其進行修改,但是我對正則表達式的了解還不夠。 有人可以幫我修改此格式以設置正數和負數嗎?
$('#valor').keyup(function(){ var v = $(this).val(); v = v.replace(/\\D/g,''); v = v.replace(/(\\d{1,2})$/, ',$1'); v = v.replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1.'); v = v != '' ? 'R$ '+ v : ''; $(this).val(v); });
您可以在啟動時檢查值是否為負,然后在末尾添加符號:
$('#valor').keyup(function(){
let v = $(this).val();
const neg = v.startsWith('-');
v = v.replace(/[-\D]/g,'');
v = v.replace(/(\d{1,2})$/, ',$1');
v = v.replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.');
v = v != ''?'$ '+v:'';
if(neg) v = '-'.concat(v); // prepend the dash
$(this).val(v);
});
編輯:這是一個更“純”的正則表達式解決方案:
$('#valor').keyup(function(){
let v = $(this).val();
v = v.replace(/[^-\d]/g, '');
v = v.replace(/(\d{1,2})$/g, ',$1');
v = v.replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.');
v = v ? '$ ' + v : '';
$(this).val(v);
});
基本上,在第一個replace語句中,將'-'
添加到不被替換的字符集中,即,在此新版本中,不是數字或破折號的所有內容都將替換為''
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.