Javascript Regex执行不匹配



我在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);

相关内容

最新更新