我测试了以下正则表达式的美国价格(分隔符逗号,分隔符点)运行正常:
^[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个正则表达式有什么问题?
在正则表达式中,.是一个特殊字符,所以当你想匹配一个文字点时,你需要用反斜杠(\.)来逃避它.对于逗号不是这种情况,因此您可以保持不变.
在你尝试,你切换,和.留下你一个转义.和\,结尾,当你真正想要切换,和\.这样的:
^[1-9][0-9]{0,2}(?:\.?[0-9]{3}){0,3}(,[0-9]{2})?$
Run Code Online (Sandbox Code Playgroud)