在ASP.NET RegularExpressionValidator中导致不一致行为的新行字符

时间:2012-11-01 16:55:26

标签: asp.net regex validation

我使用RegularExpressionValidator来限制TextArea中输入的文字数量。表达式为"^[\s\S]{0,750}$"。这几乎完美无缺,但我注意到了一些奇怪的行为。

如果我输入749个字符和一个换行符(或748个字符和两个换行符等),我会看到浏览器之间看似不正确和不一致的行为。我猜这与换行不一致为1个字符或2个(CR& LF)有关。

IE 8 - 客户端验证失败,因为它(正确地)被视为751个字符,并且无法提交页面。 IE 9& Firefox - 客户端验证通过并发布值。但是,在回发时会显示验证错误消息。但是仍然接受该值,这是错误的,因为我最终得到了751个字符。

有人知道造成这种情况的原因以及如何将文本区域限制为N个字符吗?

修改:修正了正则表达式

编辑:关注此事。很难确定RegularExpressionValidator的工作原理,所以我只是将其切换为自定义验证器并手动进行正则表达式检查。这解决了这个问题。

0 个答案:

没有答案