1

プログラムでこのような入力を受け取っています

lat1,long1;lat2,long2;lat3,long3

列で区切られた緯度経度のペア。

いいえ、間違ったデータを受け取らないように、この入力を検証したいと思います。

正規表現を作成しました:

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

問題は、で区切られたペアの文字列ではなく、単一のペアのみを検証することです。私が望むように。

私のデータを検証するための式を考え出すのを手伝ってくれたら、私は感謝します.

4

3 に答える 3

1

式は、文字列の先頭にある 1 つのペアとそれに続く 1 つの列のみをチェックします。

これを試すことができます:

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

それはあなたの正規表現(いくつかのブラケットinutilesなし)の後に0回以上の列とペアが続きます。

あなたの4つの例を使ったテスト。

于 2013-01-09T15:34:09.520 に答える
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 に答える
0

このようなものはどうですか?

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

次のようなテスト文字列を使用して、Rubular.com (パーマリンク)で試しました。

-10,10;10.5,-10.337

結果?

Match 1
1.  -10,10
Match 2
1.  10.5,-10.337
于 2013-01-09T15:35:53.457 に答える