应该很简单,但正则表达式似乎永远不会:)。任何人都可以帮助如何从字符串中删除逗号和任何非数字字符吗?谢谢。它在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, '')
您应该使用此正则表达式/(,|[^d.-]+)+/g
来检测逗号和任何非数字值,例如组中的字符、运算符、空格,并且比单个检测更快。 负数(例如 -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));
}
}
带有正则表达式。 num1.replace(/[^0-9.]/, '')