должно быть просто, но RegEx никогда не кажется :). Может ли кто-нибудь помочь в том, как удалить запятую и любые нечисловые символы из строки? Спасибо. Он находится в блоке var result
. Очевидно, когда вы вводите оператора в номер, он взрывается. num1
и num2
. Мне также нужно убрать все тире.
function calcTotalRetailVal() {
var num1 = $oneTimeCostField.val();
var num2 = $recurringTotalCostField.val();
//In the replace method
var result = parseFloat(num1.replace(/,/g, '')) + parseFloat(num2.replace(/,/g, ''));
if (!isNaN(result)) {
$totalRetailAmountField.text('$' + result.toFixed(2));
}
}
const clearText = plainText.replace(/\D/g,'')
\D будет соответствовать всем нецифрам, но если вам нужно сохранить точки и тире:
replace(/[^\d.-]/g, '')
Спасибо, мне также нужно убрать тире b/c на случай, если кто-то введет отрицательную сумму.
заменить(/[^\d.]/g, '') затем
Мне также нужно убрать запятые (извините, что беспокою)
replace(/[^\d,-]/g, '') удаляет дефисы и запятые
С регулярным выражением.
num1.replace(/[^0-9.]/, '')
Вы также должны разрешить знак минуты для отрицательных чисел.
Вы должны использовать это регулярное выражение /(,|[^\d.-]+)+/g
для обнаружения запятых и любых нечисловых значений, таких как символы, операторы, пробелы в группах и быстрее, чем индивидуальное обнаружение. отрицательное число (ex -1) и . будет включен.
Я переписываю ваш код.
function calcTotalRetailVal() {
var num1 = $oneTimeCostField.val();
var num2 = $recurringTotalCostField.val();
//In the replace method
var result = parseFloat(num1.replace(/(,|[^\d.-]+)+/g, '')) + parseFloat(num2.replace(/(,|[^\d.-]+)+/g, ''));
if (!isNaN(result)) {
$totalRetailAmountField.text('$' + result.toFixed(2));
}
}
Это также удалит знак минут, необходимый для отрицательных чисел, и десятичную точку.