1

我在我的程序中收到这样的输入

lat1,long1;lat2,long2;lat3,long3

由列分隔的纬度经度对。

不,我想验证这个输入,这样我就不会收到错误的数据。

我创建了一个正则表达式:

((^(\-?\d+(\.\d+)?),(\-?\d+(\.\d+)?));?)

问题是它只验证一个对而不是由 ; 分隔的一串对 如我所愿。

如果您能帮我想出一个表达式来验证我的数据,我将不胜感激。

4

3 回答 3

1

您的表达式仅检查字符串开头的一对,后跟一列。

你可以试试这个:

^\-?\d+(\.\d+)?,\-?\d+(\.\d+)?(;\-?\d+(\.\d+)?,\-?\d+(\.\d+)?)*$

那是您的正则表达式(没有一些括号 inutiles),后面是 0 次或更多次一列和一对。

用你的 4 个例子进行测试。

于 2013-01-09T15:34:09.520 回答
0

这样的事情怎么样?

(-?[\d\.]+,-?[\d\.]+)+;?+

我在Rubular.com (permalink)上试过,测试字符串如下:

-10,10;10.5,-10.337

结果?

Match 1
1.  -10,10
Match 2
1.  10.5,-10.337
于 2013-01-09T15:35:53.457 回答
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
于 2013-01-09T15:59:26.203 回答