3

我正在处理的 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

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

4

3 回答 3

5

您可以将内置验证器之一与计算单词的正则表达式一起使用。

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

(\b.*\b){0,10}
于 2008-09-09T18:55:57.867 回答
1

这个正则表达式似乎工作得很好:

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

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

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

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

于 2008-09-09T19:48:51.360 回答
0

我投票支持 mharen 的答案,并对其进行了评论,但由于默认情况下评论是隐藏的,让我再次解释一下:

您希望使用正则表达式验证器而不是自定义验证器的原因是,正则表达式验证器还将使用 JavaScript 自动验证正则表达式客户端(如果可用)。如果他们通过了验证,那没什么大不了的,但是每次有人未能通过客户端验证时,您就可以避免服务器进行回发。

于 2008-09-09T18:59:54.490 回答