我是正则表达式的新手,我想用javascript验证用户输入。
用户输入是一种货币,但我希望它没有数千个逗号。
有效
"12.34"
"12,34"
"1234,5"
"123"
"123,00"
"12000"
无效
"12a34"
"abc"
"12.000,00"
"12,000.00"
我尝试了以下正则表达式模式,但它对我不起作用。它验证了例如" 12a34"而且我不知道为什么。
/\d+([\.|\,]\d+)?/
正确的正则表达式模式是什么?你能一步一步地解释一下吗?
谢谢!
答案 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?)