ASP.Чистое количество слов с помощью пользовательского валидатора
-
09-06-2019 - |
Вопрос
Требование для проекта ASP.Net 2.0, над которым я работаю, ограничивает определенное поле максимум 10 словами (не символами).В настоящее время я использую элемент управления CustomValidator со следующим методом ServerValidate:
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
Есть ли у кого-нибудь более тщательный / точный метод подсчета количества слов?
Решение 2
Это регулярное выражение, кажется, отлично работает:
"^(\b\S+\b\s*){0,10}$"
Обновить:в приведенном выше примере было несколько недостатков, поэтому в итоге я использовал это регулярное выражение:
[\s\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\xBF]+
Я split()
строку в этом регулярном выражении и используйте length
из результирующего массива, чтобы получить правильное количество слов.
Другие советы
Вы можете использовать один из встроенных валидаторов с регулярным выражением, которое подсчитывает слова.
Я немного подзабыл о регулярных выражениях, так что будь со мной помягче:
(\b.*\b){0,10}
Я проголосовал за ответ Марена и также прокомментировал его, но поскольку комментарии по умолчанию скрыты, позвольте мне объяснить это еще раз:
Причина, по которой вы хотели бы использовать средство проверки регулярных выражений, а не пользовательский средство проверки, заключается в том, что средство проверки регулярных выражений также автоматически проверяет регулярное выражение на стороне клиента с помощью javascript, если оно доступно.Если они проходят проверку, в этом нет ничего страшного, но каждый раз, когда кто-то не проходит проверку на стороне клиента, вы избавляете свой сервер от выполнения обратной передачи.