我测试了以下正则表达式的美国价格(分隔符逗号,分隔符点)运行良好:
^[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位小数。
这两个正则表达式有什么问题?
答案 0 :(得分:7)
在正则表达式中,.
是一个特殊字符,所以当你想要匹配一个文字点时,你需要用反斜杠(\.
)来转义它。对于逗号,情况并非如此,因此您可以保持不变。
在您尝试切换时,您最后切换了,
和.
留下未转义的.
和\,
的{{1}} ,
和\.
就像这样:
^[1-9][0-9]{0,2}(?:\.?[0-9]{3}){0,3}(,[0-9]{2})?$