Regexp欧洲价格

4 javascript regex

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

 ^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(\.[0-9]{2})?$
Run Code Online (Sandbox Code Playgroud)

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

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

^[1-9][0-9]{0,2}(?:.?[0-9]{3}){0,3}(\,[0-9]{2})?$
Run Code Online (Sandbox Code Playgroud)

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

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

And*_*ark 7

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

在你尝试,你切换,.留下你一个转义.\,结尾,当你真正想要切换,\.这样的:

^[1-9][0-9]{0,2}(?:\.?[0-9]{3}){0,3}(,[0-9]{2})?$
Run Code Online (Sandbox Code Playgroud)