我正在制作Java应用程序,其中用户输入一个用逗号分隔的小数,如:-343.123,0.32或3,-321用于纬度和经度,如:
纬度,经度,纬度和经度均为double
有效字符串:43,-23.123
或32.312,32.33
我试过这个正则表达式,但它不起作用:
str.matches("^[-0-9.0-9][,][-0-9.0-9]$")
答案 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没有整数(非常不可能),请将数字整数部分的匹配字符更改为*。