正则表达式限制具有换行符的字符串的字符串长度

时间:2009-10-23 20:58:09

标签: asp.net regex validation

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

但是如果一个字符串的“\ r \ n”比上面的匹配总是失败!

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

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

谢谢你, 安德烈

3 个答案:

答案 0 :(得分:12)

验证输入时,您可以使用RegexOptions.Singleline选项。这将输入视为单行语句,并将其解析为。

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

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

这应该适用于多行输入。

答案 1 :(得分:0)

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

但是,从UX的角度来看,我也会实现一个客户端“字符计数器”。有很多东西可以找到。 jQuery有一些选择。然后,您可以将自定义验证程序实现为仅运行服务器端,然后使用字符计数器作为客户端验证。用户可以更好地查看他们在打字时留下了多少个字符。

答案 2 :(得分:0)

无法设置RegexOptions让你搞砸了。由于这是在RegularExpressionValidator中,您可以尝试在正则表达式中设置选项。

我认为这应该有效:

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

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

相关问题