0

すべてのダッシュ以外の文字列を受け入れる正規表現を作成するという問題に直面しています。つまり、文字列にすべてのダッシュが含まれている場合、拒否する必要があります。

私は試し[0-9-]*ましたが、すべてのダッシュを受け入れ、-*[0-9]+私が望むことを行いますが、シャッフルを許可しません(0-9と-(ダッシュ)の混合文字列を意味します)。

たとえば、trt-09tr- を受け入れる必要があります。---rte434rt を受け入れる必要があります。- 拒否する必要があります。------ 拒否する必要があります。---6 承認されました。--- 承知いたしました。

誰かが私を助けることができれば。ありがとうございました

4

2 に答える 2

4

そのためには、入力全体に一致する否定的な先読みが必要です。(?!^-+$).*

for (String in : new String[] {"trt-09tr-", "---rte434rt", "-", "------", 
                               "---6", "--u"})
  System.out.println(in.matches("(?!^-+$).*"));

版画

true
true
false
false
true
true
于 2012-10-31T13:49:41.283 に答える
3

次の正規表現を試してください。

^-*$

一致する各文字列は破棄できます。

String r = "^-*$";
System.out.println(!"----".matches(r));    // false
System.out.println(!"--e--".matches(r));   // true
System.out.println(!"-e-e-e-".matches(r)); // true
于 2012-10-31T13:49:32.820 に答える