我在Chrome浏览器中运行以下javascript。当我期待"123456.78"时,它会产生一个空白字符串。
var amt = "$123,456.78";
digitRegex = /(d|.)*/
amtarr = digitRegex.exec(amt);
amtstr = amtarr.join("");
alert(amtstr);
任何想法?
最终代码是这样的:
moneyRegex = /^$?(d{1,3}(,d{3})*|(d+))(.d{1,2})?$/
amt = $("#txtAmt").val();
amtok = (amt.search(moneyRegex) != -1);
amtval = 0;
if (amtok == true) {
digitRegex = /[d.]+/g
amtarr = digitRegex.exec(amt);
amtstr = amtarr.join("");
alert(amtstr);
}
amtstr = amt.replace(/[$,]/g, "");
会给你你想要的。它从字符串中删除逗号和美元符号,留下123456.78
.
你可以试试
digitRegex = /(d|.)*/g
获取所有匹配项。你也可以使用:
digitRegex = /[d.]+/g
对于你想要做的事情应该是可以的。
我不知道为什么*
不返回结果,将其更改为+
,它将工作。
但是你的代码中还有一个错误。
digitRegex.exec(amt);
返回一个数组,但它只包含第一个匹配项和下一个匹配项的位置以及其他一些内容。请看这里mozilla.org
您必须调用exec
,直到它返回null
以获得所有匹配,并且只有数组中的第一项包含您的匹配。
var amt = "$123,456.78";
digitRegex = /(d|.)+/g;
var result = new Array();
while ((amtarr = digitRegex.exec(amt)) != null)
{
result.push(amtarr[0]);
}
amtstr = result.join("");
alert(amtstr);