使用自定义验证器的ASP.Net字数

时间:2008-09-09 18:50:45

标签: asp.net vb.net .net-2.0 validation

我正在研究的ASP.Net 2.0项目的要求将某个字段限制为最多10个字(不是字符)。我目前正在使用具有以下ServerValidate方法的CustomValidator控件:

Protected Sub TenWordsTextBoxValidator_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles TenWordsTextBoxValidator.ServerValidate
    '' 10 words
    args.IsValid = args.Value.Split(" ").Length <= 10
End Sub

有没有人有更彻底/更准确的字数统计方法?

3 个答案:

答案 0 :(得分:5)

您可以使用其中一个内置验证器和一个对单词进行计数的正则表达式。

我对正则表达式有点生疏,所以对我很轻松:

(\b.*\b){0,10}

答案 1 :(得分:1)

这个正则表达式看起来效果很好:

"^(\b\S+\b\s*){0,10}$"

更新:上面有一些瑕疵,所以我最终使用了这个RegEx:

[\s\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\xBF]+

split()该正则表达式上的字符串,并使用结果数组的length来获取正确的字数。

答案 2 :(得分:0)

我投了mharen的答案,并对此进行了评论,但由于评论默认隐藏,请让我再解释一下:

您希望使用正则表达式验证程序而不是自定义验证程序的原因是正则表达式验证程序还将使用javascript自动验证正则表达式客户端(如果可用)。如果他们通过验证,这没什么大不了的,但每次有人通过客户端验证失败时,都会使您的服务器无法进行回发。