欧洲价格的正则表达式

时间:2012-02-22 21:30:33

标签: javascript regex

我测试了以下正则表达式的美国价格(分隔符逗号,分隔符点)运行良好:

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

它有效,价格如30,000.000被拒绝。只接受2位小数。

我试图交换它们来处理欧洲价格:

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

但它不起作用,接受30,000,000的价格,这是错误的。只接受2位小数。

这两个正则表达式有什么问题?

1 个答案:

答案 0 :(得分:7)

在正则表达式中,.是一个特殊字符,所以当你想要匹配一个文字点时,你需要用反斜杠(\.)来转义它。对于逗号,情况并非如此,因此您可以保持不变。

在您尝试切换时,您最后切换了,.留下未转义的.\,的{​​{1}} ,\.就像这样:

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