RegEx货币(JavaScript)

时间:2013-11-20 09:27:32

标签: javascript regex currency

我是正则表达式的新手,我想用javascript验证用户输入。

用户输入是一种货币,但我希望它没有数千个逗号。

有效

"12.34"
"12,34"
"1234,5"
"123"
"123,00"
"12000"

无效

"12a34"
"abc"
"12.000,00"
"12,000.00"

我尝试了以下正则表达式模式,但它对我不起作用。它验证了例如" 12a34"而且我不知道为什么。

/\d+([\.|\,]\d+)?/

正确的正则表达式模式是什么?你能一步一步地解释一下吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

在字符组中不要逃避.。尝试使用以下正则表达式:

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

^   = start of string
$   = end of string
()? = an optional capturegroup ( e.g. to validate "123")
{x,y} = The symbol may occur minimum x and maximum y times

答案 1 :(得分:-1)

RegExp: /^(?!\(.*[^)]$|[^(].*\)$)\(?\$?(0|[1-9]\d{0,2}(,?\d{3})?)(\.\d\d?)?\)?$/g
pattern: ^(?!\(.*[^)]$|[^(].*\)$)\(?\$?(0|[1-9]\d{0,2}(,?\d{3})?)(\.\d\d?)?\)?$
flags: g
3 capturing groups: 
   group 1: (0|[1-9]\d{0,2}(,?\d{3})?)
   group 2: (,?\d{3})
   group 3: (\.\d\d?)

Regex Test