私はしばらくの間、必要な正規表現を見つけようとしてきました。の前の 3 文字。および小数点以下 2 文字。
私はこれを試します
[+ -]?[0-9]{0,3}[.]?[0-9]{0,2} # but accepted as 55555 or the
[+ -]?[0-9]{0,3}[.][0-9]{0,2} # but this is not accepted as the 44
誰かが私を助けることができますか?
私はしばらくの間、必要な正規表現を見つけようとしてきました。の前の 3 文字。および小数点以下 2 文字。
私はこれを試します
[+ -]?[0-9]{0,3}[.]?[0-9]{0,2} # but accepted as 55555 or the
[+ -]?[0-9]{0,3}[.][0-9]{0,2} # but this is not accepted as the 44
誰かが私を助けることができますか?
これを使って:
^[+ -]?[0-9]{1,3}([.][0-9]{1,2})?$
最初と最後にアンカーを追加しました。これらが省略された場合、55555は555と55の2つの一致を生成します。
55555
小数点のみをオプションにしたため、最初の試行で一致し、小数点のみをオプションでなくし44
たため、2 番目の試行では一致しませんでした。やりたいことは、小数点以下の桁数をすべてオプションにすることです。
123
それ以外の場合は一致を固定する必要もあり45.12
、たとえば345
一致します。12345.12345
文字列を検証する場合は、次を使用します。^[-+]?[0-9]{1,3}(\.[0-9]{1,2})?$
説明:
^ # Match the start of string
[-+]? # Optional plus or minus
[0-9]{1,3} # Followed by 1 - 3 digits
(\.[0-9]{1,2})? # Optionally followed by decimal place (escaped \) & 1-2 digits
$ # Match the end of the string
ここで試してみてください!
その他の注意事項:
これは、パターンに適合する文字列のみに一致します。123.34
文字列内のパターンに一致させたい場合、つまりI am 123.34 cm tall
代わりに(^|\s)
andをアンカーとして使用するよりも:(\s|$)
(^|\s)[-+]?[0-9]{1,3}(\.[0-9]{1,2})?(\s|$)
これは行頭と一致し、^
行末と同じです。一致にはスペースが含まれるため、必要に応じて削除することを忘れないでください。|
\s
$
trim(match)
次のようなことを試すことができます:-
^?[0-9]{1,3}([.][0-9][0-9]?)?
また
\d+(\.\d{1,2})?