如何确保字符串不超过3位?

时间:2012-10-23 12:09:17

标签: .net regex

我正在寻找一个可以验证我的字符串的正则表达式。字符串

  1. 长度为6到25个字符(允许任何字符)
  2. 不超过3位数
  3. 如何做到这一点?

3 个答案:

答案 0 :(得分:4)

您可以使用否定前瞻断言:

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

See it

确保输入中没有4位数字。

答案 1 :(得分:3)

这可以通过lookahead assertion

来实现
^(?=(?:\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

答案 2 :(得分:1)

听起来你只需要排除超过三位数的字符串和那些不符合长度要求的字符串。

两者都不需要正则表达式,事实上,构建匹配的正则表达式是棘手的,因为数字可能会四处传播。

使用"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;
}