0

文字列と一致させようとしていますが、

  1. スペース以外の文字を少なくとも 1 文字含める必要があります

  2. 文字列の長さは 1 ~ 8 文字である必要があります。

1〜8文字に制限したいのに、なぜ以下のコードが機能しないのだろうか。

.*\S.{1,8}

一致する必要があり、

abcdefge

 abcdefg   - first character is space, Any number of spaces can be there, but atleaset one non space character should be there

       a  

一致してはいけません、

            - All spaces
 abcdefghijklm - Exeeds more then 8 characters

ありがとう

4

4 に答える 4

2

非正規表現は非常に単純で簡単です。

s.length() <= 8 && s.trim().length() > 0
于 2012-08-15T16:58:43.440 に答える
2

最初の基準には先読みを使用し、2 番目の基準には開始アンカーと終了アンカーを組み合わせた定量化された「何でも」文字を使用します。

/^(?=.*\S).{1,8}$/

(これはテストされていないため、バグについてはお詫びします)

于 2012-08-15T17:05:36.630 に答える
1

1.これを行うためのより良い代替手段があると思います。

2.最初に文字列の長さが 1 ~ 8 であることを確認します。

3.はいの場合は、メソッドを使用して、スペース文字でない!Characters.isWhitespace()ことを確認します。

于 2012-08-15T17:05:05.423 に答える
1

使用する:

str.matches("(?=.*[^ ]).{1,8}")
于 2012-08-15T17:20:39.297 に答える