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

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

两者都不需要正则表达式,事实上,构造一个正则表达式来匹配是很棘手的,因为数字可能会四处分布。

用于"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 回答