我在程序中收到这样的输入
LAT1,long1; LAT2,long2; lat3,long3
纬度经度对由列分隔。
不,我想验证此输入,以便我可能收不到错误的数据。
我创建了一个正则表达式:
((^(\-?\d+(\.\d+)?),(\-?\d+(\.\d+)?));?)
问题是它只验证一对不是由一对分隔的对;如我所愿。
如果你能帮我提出一个表达来验证我的数据,我将不胜感激。
答案 0 :(得分:0)
你的表达式只检查一列所包含的字符串开头的一对。
你可以试试这个:
^\-?\d+(\.\d+)?,\-?\d+(\.\d+)?(;\-?\d+(\.\d+)?,\-?\d+(\.\d+)?)*$
这是你的正则表达式(没有一些括号的inutiles),是一列和一对的0或更多倍。
答案 1 :(得分:0)
这样的事情怎么样?
(-?[\d\.]+,-?[\d\.]+)+;?+
我在Rubular.com (permalink)上尝试过,测试字符串如下:
-10,10;10.5,-10.337
结果
Match 1
1. -10,10
Match 2
1. 10.5,-10.337
答案 2 :(得分:0)
我会使用以下模式,它也可以接受.2
和0.2
等值。
^-?(\d+(\.\d+)?|\.\d+),-?(\d+(\.\d+)?|\.\d+)(;-?(\d+(\.\d+)?|\.\d+),-?(\d+(\.\d+)?|\.\d+)){2}$
这是故障。
^ # beginning of string
-? # optional minus sign
( # either
\d+(\.\d+)? # an integer with an optional decimal part
| # or
\.\d+ # a decimal number
)
, # a comma
-? # optional minus sign
( # either
\d+(\.\d+)? # an integer and an optional decimal part
| # or
\.\d+ # a decimal number
)
(
; # a semicolon
-? # optional minus sign
( # either
\d+(\.\d+)? # an integer and an optional decimal part
| # or
\.\d+ # a decimal number
)
, # a comma
-? # optional minus sign
( # either
\d+(\.\d+)? # an integer and an optional decimal part
| # or
\.\d+ # a decimal number
)
){2} # with 2 repetitions (of the pattern)
$ # end of string