3

文字列を検証する正規表現を探しています。文字列は

  1. 長さは6〜25文字です(任意の文字を使用できます)
  2. 3桁を超えない

これはどのように行うことができますか?

4

3 に答える 3

4

否定先読みアサーションは次のように使用できます。

^(?!.*[0-9].*[0-9].*[0-9].*[0-9]).{6,25}$

見る

これにより、入力に 4 桁がないことが保証されます。

于 2012-10-23T12:17:53.297 に答える
3

これは、先読みアサーションで実現できます。

^(?=(?:\D*\d){0,3}\D*$).{6,25}$

説明:

^           # Start of string
(?=         # Assert that the following can be matched here:
 (?:\D*\d)  # Any number of non-digits, followed by one digit
 {0,3}      # (zero to three times)
 \D*        # followed by only non-digits
 $          # until the end of the string
)           # (End of lookahead)
.{6,25}     # Match 6 to 25 characters (any characters except newlines)
$           # End of string
于 2012-10-23T12:17:37.757 に答える
1

3桁を超える文字列と長さの要件に準拠していない文字列のみを除外する必要があるようです。

どちらも正規表現を必要とせず、実際には、数字が分散している可能性があるため、一致する正規表現を構築するのは困難です。

"a string".Length文字数の確認に使用します。

文字を反復処理しchar.IsDigit、桁数を確認するために使用します。

public bool IsValid(string myString)
{
   if (myString.Length < 6 || myString.Length > 25)
      return false;

   int digitCount = 0;
   foreach(var ch in myString)
   {
      if(char.IsDigit(ch))
        digitCount;
   }

   return digitCount < 4;
}
于 2012-10-23T12:14:53.113 に答える