Javascript Regexp for Amount

时间:2011-04-25 05:55:56

标签: javascript

在不必编写复杂的正则表达式的情况下尝试执行以下操作:

我只想要以下输入: 数字,逗号(,)和句点(。)

实施例

  • 123.123.101.45,00
  • 1.0
  • 1,00
  • 5
  • 50

从上面的例子可以看出,所有3种类型的输入(数字,逗号和句号)不必同时存在,但这些是我想要允许的唯一3种类型的输入。不应该允许任何其他事情。

有人可以帮助,请提前谢谢。

4 个答案:

答案 0 :(得分:1)

/^[\d.,]+$/

这将匹配至少包含0-9.,一次的字符串。

jsFiddle

答案 1 :(得分:0)

亚历克斯的答案可以纠正为

/^[\d.,]+$/

但允许最多一个逗号(你似乎用作小数点),你可以写

/^[\d.]*,{0,1}\d*$/

答案 2 :(得分:0)

这是一个有趣的资源:http://regexlib.com/Search.aspx?k=amount

答案 3 :(得分:0)

此函数将返回数值或false,具体取决于第一个参数是否格式正确。可以省略dp参数(默认为'。'),'。',','或'?'在这种情况下,数字是针对dp ='。'进行测试的。或者dp =','。

   function numberValue (n, dp) {
     if ((dp = dp || '.') === '?') // check with dp = '.' or ','
       return false === (dp = numberValue (n)) ? numberValue (n, ',') : dp;

     var sep = dp === '.' ? /,/g : /\./g;

     if ((n = n.split (dp)).length < 3 &&        // 0 or 1 decimal point
         !sep.test (n[1] || '')) {               // no separators after dp
       n[0] = n[0].replace (sep, '');            // remove sep chars before dp
       n = n[0] + (n[1] ? '.' + n[1] : '')       // restore number using '.'
       if (/^[-+]?(\d?\.\d+|\d+.\d*|\d+)$/.test (n)) // if number is correct
         return +n; // return its value
     }    

     return false; // return error flag;
  }