Javaのjava.util.regex.Patternクラスを使って正規表現とマッチしているかを調べたいのですが、
下記の条件にあてはまる正規表現がわかりません。
・整数部分は3桁まで、少数点第二位まで可
もしわかる方がいらっしゃったらご教授いただきたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
こんな感じですかね。
java
1Pattern pt = Pattern.compile("^\d{1,3}\.?\d{0,2}$"); 2 3String num1 = "1"; 4String num2 = "1.1"; 5String num3 = "123"; 6String num4 = "1.12"; 7String num5 = "123.12"; 8String num6 = "1234.12"; 9String num7 = "123.123"; 10 11System.out.println(pt.matcher(num1).find()); 12System.out.println(pt.matcher(num2).find()); 13System.out.println(pt.matcher(num3).find()); 14System.out.println(pt.matcher(num4).find()); 15System.out.println(pt.matcher(num5).find()); 16System.out.println(pt.matcher(num6).find()); 17System.out.println(pt.matcher(num7).find()); 18 19/* 20true 21true 22true 23true 24true 25false 26false 27*/
追記
すみません。
確かにこれだと整数4、5桁でも通ってしまいますね。
こちらで
java
1Pattern pt = Pattern.compile("^([1-9][0-9]{0,2}|0)(\.[0-9]{1,2})?$"); 2 3String num1 = "1"; 4String num2 = "1.1"; 5String num3 = "123"; 6String num4 = "1.12"; 7String num5 = "1234"; 8String num6 = "123.12"; 9String num7 = "1234.12"; 10String num8 = "123.123"; 11 12System.out.println(pt.matcher(num1).find()); 13System.out.println(pt.matcher(num2).find()); 14System.out.println(pt.matcher(num3).find()); 15System.out.println(pt.matcher(num4).find()); 16System.out.println(pt.matcher(num5).find()); 17System.out.println(pt.matcher(num6).find()); 18System.out.println(pt.matcher(num7).find()); 19System.out.println(pt.matcher(num8).find()); 20 21/* 22true 23true 24true 25true 26false 27true 28false 29false 30*/
投稿2020/08/20 04:12
編集2020/08/20 10:19総合スコア2183
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/20 04:28
2020/08/20 04:39
2020/08/20 09:01
2020/08/20 10:47