文字列は、特定の数字が含まれているか確認してください(例:「111」)

RNAME。

例えば、「111」、「2」、「33」、trueを返す必要があります - 指定した文字列のみだけで、特定の数字が含まれているかどうかを確認する必要があります。

"12" falseを返す必要があります。

空の文字列(「」)もtrueを返す必要があります。

文字列が数字のみとなし、他の文字が含まれています。

仕事に思える醜いのJava正規表現を書いたが、助けることはできませんが、それははるかに短い形で書かれるべきだと思います。

str.matches("1*|2*|3*|4*|5*|6*|7*|8*|9*|0*")

すべての数字一つ一つのリストを避け、上記行うには、より簡単でエレガントな方法はありますか?

PushpeshクマールRajwanshi:

あなたは、最初の桁をキャプチャするためにグループを使用して、次の桁がすべて同じであることを保証するために、後方参照を使用してこの正規表現を使用することができます

^(\d)?\1*$

説明:

  • ^ - 文字列のスタート
  • (\d)?-グループ1の1桁とキャプチャにマッチし、?それが空の文字列にマッチできるようにするには、オプションになります。
  • \1* - 同じ数字の0回以上にマッチ
  • $ - 文字列の終わり

正規表現のデモ

Javaコード、

List<String> list = Arrays.asList("5","5555","11111","22222","1234", "");
list.forEach(x -> {
    System.out.println(x + " --> " + x.matches("(\\d)?\\1*"));
});

プリント、

5 --> true
5555 --> true
11111 --> true
22222 --> true
1234 --> false
 --> true

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=178057&siteId=1