代码之家  ›  专栏  ›  技术社区  ›  Andrey

regex用于限制具有新行字符的字符串长度

  •  7
  • Andrey  · 技术社区  · 15 年前

    看起来像一个简单的任务-获取一个测试特定长度字符串的regex: ^ { 1500 } $

    但是,如果字符串的\r\n“大于上述匹配,则始终失败!

    正确的regex应该如何接受新行字符作为字符串的一部分?

    我有一个 <asp:TextBox TextMode="Multiline"> 并使用RegularExpressionValidator检查用户键入内容的长度。

    谢谢您, 安德烈

    3 回复  |  直到 15 年前
        1
  •  12
  •   Yannick Motton    15 年前

    你可以用 RegexOptions.Singleline 验证输入时的选项。这将输入视为单行语句,并对其进行相应的解析。

    否则,可以尝试使用以下表达式:

    ^(.|\s){1,500}$
    

    这应该在多行输入中工作。

        2
  •  0
  •   DA.    15 年前

    在检查字符串的长度之前,可以去掉换行符吗?这在验证服务器端时很容易做到。(在.NET中,您可以为此使用自定义验证器)

    不过,从UX的角度来看,我也会实现客户端的“字符计数器”。还有很多东西要找。jquery有几个选项。然后,您可以实现自定义验证器以仅运行服务器端,然后使用字符计数器作为客户端验证。对于用户来说,在他们打字时看到他们还剩下多少个字符就更好了。

        3
  •  0
  •   Steve Wortham    15 年前

    无法设置RegexOptions会把你搞得一团糟。因为它位于RegularExpressionValidator中,所以可以尝试在正则表达式本身中设置选项。

    我认为这应该有效:

    (?s)^.{1,500}$
    

    (?)s)part打开单行选项,允许点匹配包括换行在内的每个字符。为了它的价值, the article here also lists the other RegexOptions 符号需要将它们设置为一个内联语句。