0

座標を検証するためのこの軽い正規表現があります^([0-9.,-]+){18,20}$^。たとえば、座標が33.431441、-170.15625で、18文字未満の場合、エラーメッセージが表示されます。良い!しかし、23以上と言う文字を追加すると、ロックを20に設定しても合格します。

http://regexpal.com/で正規表現をテストできます。

この問題を解決するにはどうすればよいですか?

前もって感謝します。

4

3 に答える 3

5

先頭のカラットが必要です。そうでない場合は、文字列の最後の18〜20文字のみをチェックします。

/^[0-9\.,-]{18,20}$/

編集:また、他の人が指摘しているように、プラス記号を削除します。
Edit2:Parensは
不要ですEdit3:ピリオドをエスケープする必要があります(そうでない場合は、任意の文字と一致します)

于 2012-06-16T00:30:11.957 に答える
2

ただのはずです^([0-9.,-]){18,20}$。は、前述の要素の+1つ以上を意味し、18〜20個の要素があります。上記の要素のうち18〜20個だけが必要です。「弦の始まり」を意味するので、最後にカレットは必要ありません

于 2012-06-16T00:29:25.513 に答える
0

制限を制限し、座標形式を検証する場合の提案は次のとおりです。

緯度、経度を想定:

^-?\d{1,2}(\.\d{1,5})?,-?\d{1,3}(\.\d{1,5})?$

カンマは常に1文字を消費します。最大経度の1桁目は3文字です。最大緯度の1桁目は2文字です。オプションの小数点は2文字です。オプションの極性は2文字です。

これにより、10文字が予約されたままになり、小数点以下の桁数が両側に5文字残ります。\d{1,5}を\d{4,5}のようなものに調整し、最低18が必要な場合は、小数点以下の桁数を強制することができます。

于 2012-06-16T00:38:54.163 に答える