繁体   English   中英

正则表达式纬度,要求保留小数点后6位

[英]Regex for latitude with required 6 decimal places

我需要Java中的一个正则表达式来检查 精度字符串的表示形式是否需要6个小数位。 小数点前的值可以为正或负。

1.123456 - correct
-123123123.123456 - correct
123123123.123456 - correct
-123123123.123456 - correct

1.12345 - wrong
-.123456 - wrong
.123456 - wrong
.12345 - wrong
123456 - wrong

我试过了:

^\s*(?=.*[1-9])\d*(\.\d{6})?\s*$

但它不能覆盖所有边缘。

尝试这个:

^\s*(-|\+)?(0|[1-9]\d*)\.\d{6}\s*$

观看现场演示

仅当它是点之前的唯一数字时,这才允许第一位为零,例如0.123456是可以的,但不能为01.123456 \\.\\d{6}恰好需要6个小数位。

有效输入应

  • 以可选的空格开头---> ^\\s*
  • 那么可选的-+ ---> (-|\\+)?
  • 然后是一位或多位数字---> \\d+
  • 然后一个点---> .
  • 然后是六位数---> (\\d{6})
  • 以可选的空格结尾---> ^\\s*

尝试这个:

^\s*(-|\+)?\d+\.(\d{6})\s*$

在正则表达式中,正向向前(?=.*[1-9])断言,右侧的内容应包含一个对所有示例都将成功的数字。 断言之后,您匹配零个或多个数字\\d*然后匹配一个可选地匹配点和6个数字的部分(\\.\\d{6})? 因此这将匹配.5888881

如果要匹配可选的减号,可以使用-?

对于示例数据,您可以使用:

^-?\\d+\\.\\d{6}$

在Java中:

String regex = "^-?\\d+\\.\\d{6}$";

说明

  • ^断言行首
  • -? 匹配可选的减号
  • \\d+\\.\\d{6}匹配一个或多个数字,一个点和6个数字
  • $行的结尾

演示版

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM