包含由逗号分隔的小数的字符串的Java正则表达式

时间:2016-01-31 23:23:33

标签: java regex

我正在制作Java应用程序,其中用户输入一个用逗号分隔的小数,如:-343.123,0.32或3,-321用于纬度和经度,如: 纬度,经度,纬度和经度均为double

有效字符串:43,-23.12332.312,32.33

我试过这个正则表达式,但它不起作用:

str.matches("^[-0-9.0-9][,][-0-9.0-9]$")

2 个答案:

答案 0 :(得分:0)

不确定哪个lat或long对负值有效,但是 对于没有指数的double,这是一个很好的正则表达式。

^\s*([+-]?(?:\d+(?:\.\d*)?|\.\d+))\s*,\s*([+-]?(?:\d+(?:\.\d*)?|\.\d+))\s*$

扩展

 ^ 
 \s* 
 (                             # (1 start)
      [+-]? 
      (?:
           \d+ 
           (?: \. \d* )?
        |  \. \d+ 
      )
 )                             # (1 end)
 \s* , \s* 
 (                             # (2 start)
      [+-]? 
      (?:
           \d+ 
           (?: \. \d* )?
        |  \. \d+ 
      )
 )                             # (2 end)
 \s* 
 $

答案 1 :(得分:0)

草率匹配(允许多个和。个字符):

"^[-+0-9.]+,[-+0-9.]+$"

更准确的一个:

"^[-+]?[0-9]+\.?[0-9]*,[-+]?[0-9]+\.?[0-9]*$"

特殊字符

? : zero or more matches of preceding
+ : one or more matches of preceding (except when in character set)
* : zero or more matches of preceding

希望有所帮助。如果期望lat / long没有整数(非常不可能),请将数字整数部分的匹配字符更改为*。