货币的正则表达式

时间:2016-06-02 14:47:59

标签: javascript regex

我是正则表达概念的新手。

我试图制作货币正则表达式

  1. 金额应为格式化数字字符串,千位分隔符使用',',小数分隔符使用'。'。

  2. 金额应精确到2位小数

  3. 金额应为非零值,正值

  4. 我试过这个

    [HostProtection(SecurityAction.LinkDemand, ExternalThreading=true)]
    public virtual IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
    {
        if (!this.CanRead)
        {
            __Error.ReadNotSupported();
        }
        Interlocked.Increment(ref this._asyncActiveCount);
        ReadDelegate delegate2 = new ReadDelegate(this.Read);
        if (this._asyncActiveEvent == null)
        {
            lock (this)
            {
                if (this._asyncActiveEvent == null)
                {
                    this._asyncActiveEvent = new AutoResetEvent(true);
                }
            }
        }
        this._asyncActiveEvent.WaitOne();
        this._readDelegate = delegate2;
        return delegate2.BeginInvoke(buffer, offset, count, callback, state);
    }
    

    但它没有满足我的要求。告诉我我是怎么做到的。

2 个答案:

答案 0 :(得分:2)

如果您想禁用0.00值,并允许没有数字分组符号的数字,则可以使用

 /^(?!0+\.0+$)\d{1,3}(?:,\d{3})*\.\d{2}$/.test(your_str)

请参阅regex demo

<强>解释

  • ^ - 字符串开头
  • (?!0+\.0+$) - 如果输入为零则未通过匹配的否定前瞻
  • \d{1,3} - 1至3位数字
  • (?:,\d{3})* - 0个逗号序列,后跟3位数字
  • \. - 一个文字点
  • \d{2} - 2位数(小数部分)
  • $ - 字符串结束。

&#13;
&#13;
document.body.innerHTML = /^(?!0+\.0+$)\d{1,3}(?:,\d{3}|\d)*\.\d{2}$/.test("1,150.25");
document.body.innerHTML += "<br/>" + /^(?!0+\.0+$)\d{1,3}(?:,\d{3}|\d)*\.\d{2}$/.test("0.25");

document.body.innerHTML += "<br/>" + /^(?!0+\.0+$)\d{1,3}(?:,\d{3})*\.\d{2}$/.test("25");
document.body.innerHTML += "<br/>" + /^(?!0+\.0+$)\d{1,3}(?:,\d{3})*\.\d{2}$/.test("0.00");
document.body.innerHTML += "<br/>" + /^(?!0+\.0+$)\d{1,3}(?:,\d{3})*\.\d{2}$/.test("1150.25");
&#13;
&#13;
&#13;

答案 1 :(得分:1)

如果您的最小值为1.00

^[1-9]\d{0,2}(?:,\d{3})*\.\d\d$

这不允许前导零。