我如何使用溢出来解析和删除多个货币符号

How can I use spilt to parse and remove multiple currency signs

我有一个需求,我需要比较两个包含总金额的字段。

其中一个字段表示金额,如 00(货币符号后跟金额。例如,对于美国 0,对于英国 €100)。

我需要解析可以包含来自不同国家/地区的金额的字段。我怎样才能使用 JQuery?

以下是我目前使用的jQuery:

var Amt= parseFloat(total.split('$'));

split 函数可以接受正则表达式。由于 $ 符号是一个特殊字符,因此必须使用反斜杠对其进行转义。对于另一个货币符号,我们使用|符号来表示OR。

split 函数将 return 一个数组,并且由于我们在货币符号上进行拆分,因此该符号将转换为空字符串 ""。在这种情况下,filter 将只显示具有真值的字符串。

我不确定你在找什么,但我做了一个我认为会有帮助的片段。

var euroTotal  = document.getElementById("euro-cost");
var usTotal    = document.getElementById("us-cost");
var peruTotal  = document.getElementById("peru-cost");
var euroResult = document.getElementById("euro-result");
var usResult   = document.getElementById("us-result");
var peruResult = document.getElementById("peru-result");

// Create a regex with currency symbols. Separate symbols with |
var moneyRegex = /[A-Z]{0,2}$|€|¥|₩|£|CHF|¢|฿|L|Q|₭|₮|₨|₱|Kč|Ft|Rp|лв|RM|MT|₦|Gs|zł|lei|S\/\./;

euroResult.innerHTML = `Parsed, ${euroTotal.innerHTML} equals: ` +
                     parseFloat(euroTotal.innerHTML.split(moneyRegex).filter(Boolean));

usResult.innerHTML = `Parsed, ${usTotal.innerHTML} equals: ` + 
                     parseFloat(usTotal.innerHTML.split(moneyRegex).filter(Boolean));

peruResult.innerHTML = `Parsed, ${peruTotal.innerHTML} equals: ` + 
parseFloat(peruTotal.innerHTML.split(moneyRegex).filter(Boolean));
<h3>Item Costs</h3>

<p>This item costs <span id="euro-cost">€400</span></p>
<p>This item costs <span id="us-cost">0</span></p>
<p>This item costs <span id="peru-cost">S/.200</span></p>

<h3>Parsing Currency Values</h3>

<p id="euro-result"></p>
<p id="us-result"></p>
<p id="peru-result"></p>

<p><strong>Feel free to play around with different currencies</strong></p>

您可以尝试使用其他一些货币符号,此函数应删除它们

我认为 split 不是最好的方法。我会使用 matchexec。抄袭和修改 Richard Hamilton 的正则表达式:

var match moneyString.match(/([A-Z]{0,2}$|CHF|[€¥₩£¢฿LQ₭₮₨₱₦]|Kč|Ft|Rp|лв|RM|MT|Gs|zł|lei|S\/\.)(.*)/);
if (! match) {
    // handle error
} else {
    var currency = match[1];
    var amt = parseFloat(match[2]);
}

修改此方法以进行更严格的语法检查,允许在货币符号前使用 -,限制为小数点后 2 位数字,检查货币符号是否正确,确保匹配整个字符串等