0

私は、文字列が次のとおりかどうかを確認するためにパターン正規表現を実行しています。

次のような digit.digit.digit:

1.1.1
0.20.2
58.55541.5221

Javaでは、これを使用します:

private static Pattern pattern = Pattern.compile("\\d*.\\d*.\\d*", Pattern.CASE_INSENSITIVE);

しかし、20.20を過ぎると。試合で真を返してください。

グランドとは?

4

5 に答える 5

7

+の代わりに使用する必要があり*ます。*は 0 回以上の繰り返し、+は 1 回以上の繰り返しです。

.さらに、次の文字をエスケープすることを忘れないでください。

"\\d+\\.\\d+\\.\\d+"
于 2012-11-13T16:41:25.673 に答える
6

*数量詞を使用しました。一致する0 or more repetition

+一致する量指定子を使用してください1 or more repetition: -

Pattern.compile("\\d+\\.\\d+\\.\\d+");

また、任意の文字に一致dot(.)する で特別な意味を持つため、 your をエスケープする必要があります。Regexしたがって、.正規表現では、一致するだけでなく.、実際には任意の文字に一致します。

于 2012-11-13T16:41:52.507 に答える
2

ドットをエスケープする必要があります。これは任意の文字に一致します。 Documentationを参照してください。

だからあなたが必要です

Pattern.compile("\\d+\\.\\d+\\.\\d+");

私も, に置き換えまし*た。+*

于 2012-11-13T16:42:10.937 に答える
2

zzzzBov の提案は正しいです。また、をエスケープする必要がある.ため、正しい正規表現は次のようになります。

\\d+\\.\\d+\\.\\d+
于 2012-11-13T16:43:14.910 に答える
0

これはあなたが必要とする基本的な正規表現です

\d+\.\d+(\.\d+)?

これは以下に一致します

20.20.20
1.1.1
1.1.1
0.20.2
58.55541.5221
20.20
于 2012-11-13T16:53:43.210 に答える