小数点以下0、1、または2桁の数値のみを有効にする必要がある正規表現を作成します。
だから私はそれをやろうとした:
"^\\d+(\\.\\d){0,2}$"
ただし、小数点以下3桁の数字でもtrueを返します。
何が間違っているのでしょうか?
回答 2 件
あなたの正規表現
^\d+(\.\d){0,2}$
1
と一致 または1.0
また、1.0.0
グループ(\.\d){0,2}
に対して0〜2回の数量詞を指定するため ドットの後の3桁には一致しません。ドットとドットの後に1桁または2桁が続く可能性がある数字を照合するには、次のように使用できます。
^\d+(?:\.\d{1,2})?$
ここでは、最初の数字の後のグループはオプションです
(?:\.\d{1,2})?
数字\d{1,2}
に数量詞が指定されている 。
関連記事
- 正規表現は、2つのキーワード(fromとto)の後に文字列を取得します
- Postgres Regex:パターンの最後の出現と行の終わりの後に文字列を抽出します
- 正規表現:特定の文字列の後に値を取得する
- 正規表現Javascriptは句読点の後にスペースを追加します
- 番号と期間の後の最初の番号の正規表現
- 3桁の有効数字の10進値でiOSゲームのベストタイムを表示する方法は?
- 10進数を長さ9の文字列にフォーマットします。「。」の前に2桁(0が埋め込まれます)。そしてその後6
- toLocaleString()が小数点以下00を表示しない
- 特別な条件でのみ文字列から数字を削除する正規表現ガイド
- 正規表現:ハイフンの後のテキストをPythonの辞書に抽出する
あなたの正規表現は、「いくつかの数字、それに続く0〜2回のドットの後に数字が続く」と言っています。間違いを見つけましたか?
3.1.4
一致しますが、3.14
しません。質問で述べていることとは反対に、ポイントの後の3桁も一致しません。代わりに、小数部分がオプションであると仮定して、次のようなものが必要になります。
または、選択した言語の文字列にアンカーしてエスケープします。