座標を検証するためのこの軽い正規表現があります^([0-9.,-]+){18,20}$^
。たとえば、座標が33.431441、-170.15625で、18文字未満の場合、エラーメッセージが表示されます。良い!しかし、23以上と言う文字を追加すると、ロックを20に設定しても合格します。
http://regexpal.com/で正規表現をテストできます。
この問題を解決するにはどうすればよいですか?
前もって感謝します。
座標を検証するためのこの軽い正規表現があります^([0-9.,-]+){18,20}$^
。たとえば、座標が33.431441、-170.15625で、18文字未満の場合、エラーメッセージが表示されます。良い!しかし、23以上と言う文字を追加すると、ロックを20に設定しても合格します。
http://regexpal.com/で正規表現をテストできます。
この問題を解決するにはどうすればよいですか?
前もって感謝します。
先頭のカラットが必要です。そうでない場合は、文字列の最後の18〜20文字のみをチェックします。
/^[0-9\.,-]{18,20}$/
編集:また、他の人が指摘しているように、プラス記号を削除します。
Edit2:Parensは
不要ですEdit3:ピリオドをエスケープする必要があります(そうでない場合は、任意の文字と一致します)
ただのはずです^([0-9.,-]){18,20}$
。は、前述の要素の+
1つ以上を意味し、18〜20個の要素があります。上記の要素のうち18〜20個だけが必要です。「弦の始まり」を意味するので、最後にカレットは必要ありません
制限を制限し、座標形式を検証する場合の提案は次のとおりです。
緯度、経度を想定:
^-?\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が必要な場合は、小数点以下の桁数を強制することができます。