【问题标题】:Minimum Length Regular Expression最小长度正则表达式
【发布时间】:2012-01-27 03:44:02
【问题描述】:

我正在尝试编写一个正则表达式来验证用户输入是否大于 X 个非空白字符。我基本上是在尝试过滤掉开始和结束的空格,同时仍然确保输入大于 X 字符;字符可以是任何字符,但不能是空格(空格、制表符、回车、换行符)。 这是我一直在使用的正则表达式,但它不起作用:

\s.{10}.*\s

如果这很重要,我正在使用 C# 4.0(Asp.net 正则表达式验证器)。

【问题讨论】:

  • 必须是正则表达式吗?你可以很容易地在没有正则表达式的情况下做到这一点。

标签: c# regex


【解决方案1】:

完全不使用正则表达式可能更容易:

input.Where(c => !char.IsWhiteSpace(c)).Count() > 10

如果中间的空格不应该算在内,那么这将起作用:

(\s*(\S)\s*){10,}

如果您不关心非空白字符之间的空白,则其他答案已涵盖该场景。

【讨论】:

  • 抱歉,刚刚更新。我正在使用正则表达式验证器。
  • @Mark - 如果某些有效字符中间有空格,您的验证是否会失败,例如` f a i l `
  • 不,没关系,只要在第一个非空白和最后一个非空白之间有 X 个字符。
  • 很酷,谢谢。它让我走上了正确的道路,我最终选择了这个:(\b*(\S)).{10,}\b,这似乎基于一些快速测试,但我显然不是正则表达式专家。
  • 更好:(\b*(\S)\s*){10,}[\S\b]
【解决方案2】:

此正则表达式在第一个和最后一个非空白字符之间查找八个或更多字符,忽略前导和尾随空格:

\s*\S.{8,}\S\s*

【讨论】:

    【解决方案3】:

    如果您尝试检查(例如在我的情况下是包含 8 位数字的电话号码),您需要参考您需要的号码下方的号码。

    (\s*(\S)\s*){7,}
    

    【讨论】:

      猜你喜欢
      • 2012-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多