我正在处理的一个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
有没有人有更彻底/更准确的统计字数的方法?
发布于 2008-09-09 11:48:51
这个正则表达式似乎工作得很好:
"^(\b\S+\b\s*){0,10}$"
更新:上面有一些缺陷,所以我最终使用了这个RegEx:
[\s\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\xBF]+
我在该正则表达式上split()
字符串,并使用结果数组的length
来获得正确的字数。
发布于 2008-09-09 10:55:58
您可以使用一个内置验证器和一个计算单词数的正则表达式。
我对正则表达式有点生疏了,所以别对我太苛刻:
(\b.*\b){0,10}
发布于 2008-09-09 10:59:54
我投票支持mharen的答案,也对其进行了评论,但由于默认情况下评论是隐藏的,让我再解释一次:
您希望使用regex验证器而不是自定义验证器的原因是,regex验证器还将使用javascript自动验证regex客户端。如果它们通过了验证,这并不是什么大问题,但每次有人未能通过客户端验证时,您的服务器就不必进行回发。
https://stackoverflow.com/questions/52591
复制