用于金额的Javascript正则表达式

用于金额的Javascript正则表达式,javascript,regex,Javascript,Regex,我正试着以一定的价格得到一个正则表达式: 任何数字+周期(至少为零,不超过一个)+任何数字(至少为零,不超过两个[如果可能,为零或两个]) 我得到的是: /^\d+\.\{0,1}+\d{0,2)+$/ …显然不起作用。我正在尝试做的示例: 123有效 123.00有效 12.34.5无效 123.000无效 尝试匹配包含或不包含期间的金额。如果包含句点,则只能包含一次且小数点后不能超过两位数。将小数点和小数点后的1或2位数设置为自己的可选组: /^\d+(\.\d{1,2})?$/ 测试

我正试着以一定的价格得到一个正则表达式:

任何数字+周期(至少为零,不超过一个)+任何数字(至少为零,不超过两个[如果可能,为零或两个])

我得到的是:

/^\d+\.\{0,1}+\d{0,2)+$/
…显然不起作用。我正在尝试做的示例:

123有效

123.00有效

12.34.5无效

123.000无效


尝试匹配包含或不包含期间的金额。如果包含句点,则只能包含一次且小数点后不能超过两位数。

将小数点和小数点后的1或2位数设置为自己的可选组:

/^\d+(\.\d{1,2})?$/

测试:

> var re = /^\d+(\.\d{1,2})?$/
  undefined
> re.test('123')
  true
> re.test('123.00')
  true
> re.test('123.')
  false
> re.test('12.34.5')
  false
> re.test('123.000')
  false
您是否尝试过:

/^\d+(\.\d{1,2})?$/

使组
(\.\d{1,2})
可选(即匹配0或1次)。

是否需要此工作

// Check if string is currency
var isCurrency_re    = /^\s*(\+|-)?((\d+(\.\d\d)?)|(\.\d\d))\s*$/;
function isCurrency (s) {
   return String(s).search (isCurrency_re) != -1
}

通常有更好的方法来检测数字<例如,code>parseFloat。@RikudoSennin
parseFloat
可用于尝试将字符串转换为数字,可能导致
NaN
或不需要的数字。RegExps可以用来验证字符串。是的,但是如果parseFloat返回一个
NaN
,这可能意味着它不是一个有效的数字。+1这也是我想到的。。。除了我的浏览器决定挂起,因为我正在发布它:(当你有100000.00时,你会怎么做?@maazza处理这些输入不是原始问题的一部分。