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

时间:2020-03-05 18:50:15  来源:igfitidea点击:

我正在研究的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

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

解决方案

回答

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

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

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

回答

我对mharen的答案投了赞成票,并对它进行了评论,但是由于默认情况下这些评论是隐藏的,因此让我再次解释一下:

我们想要使用正则表达式验证器而不是自定义验证器的原因是,如果可用,正则表达式验证器还将使用javascript自动验证正则表达式客户端。如果他们通过了验证,那没什么大不了的,但是每当有人通过客户端验证失败时,我们就可以避免回发服务器。

回答

这个正则表达式似乎很好用:

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

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

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

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