2009-10-23 186 views
7

看起来像一个简单的任务 - 获得一个测试特定长度的字符串,正则表达式: ^ {1500} $正则表达式来限制字符串的长度与新行字符

但如果字符串为“\ r \ n“比上面的比赛总是失败!

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

我有一个<asp:TextBox TextMode="Multiline">和使用的RegularExpressionValidator检查什么用户类型的长度英寸

谢谢 安德烈

回答

12

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

否则,你可以给下面的表达式一试:

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

这应多投入工作。

+0

您能否替换大括号的大括号;否则,它的工作,谢谢! – Andrey 2009-10-26 13:57:18

+0

修正了错字:-) – 2009-10-26 16:09:53

+0

Upvoted,但是那些用于验证的应该谨慎,在技术上,这可以绕过例如500 [ENTER]。 – AmmarCSE 2017-08-13 05:37:46

0

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

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

+0

我使用asp.net的RegularExpressionValidator,它使用提供的正则表达式执行客户端和服务器端验证 – Andrey 2009-10-24 05:11:25

+0

我的建议是使用REGEX唯一服务器端(关闭客户端用于该控件),因为这仅仅用于验证数据进入数据库。客户端,而不是事后验证它,我会建议一个活的“字符计数器”,因为从用户体验角度来看它是一个更好的指标。如果你已经在使用jQuery或者其他的东西,这将会很有意义,因为它很容易添加。如果没有,也许不值得仅仅为这一块领域。 – 2009-10-26 16:43:06

+0

呃,让我改述一下......如果REGEX仍然是一个问题,请使用自定义控件验证服务器端。您可以轻松地检查服务器端的字符串长度,并忘记REGEX。然后使用实时计数字符客户端的JavaScript方法。 – 2009-10-26 16:46:25

0

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

我认为这应该工作:

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

的部分打开的单线选项,这将使点的每一个字符,包括换行符匹配(S?)。对于它的价值,以及将它们设置为内联语句所需的表示法。

+0

+1好的建议。顺便说一句,不错的网站(RegexHero.net):) – 2009-10-23 23:54:25

+0

谢谢你。我试试。;) – 2009-10-24 00:04:03

+0

这个表达式在客户端验证中断 - Javascript不理解(?s) – Andrey 2009-10-26 13:51:52

相关问题