Regex для ограничения длины строки для строк с символами новой строки - PullRequest
7 голосов
/ 24 октября 2009

Похоже на простую задачу - получить регулярное выражение, которое проверяет строку на определенную длину: ^. {1500} $

Но если строка имеет "\ r \ n", приведенное выше совпадение всегда будет неудачным!

Как должно выглядеть правильное регулярное выражение для принятия символов новой строки как части строки?

У меня есть <asp:TextBox TextMode="Multiline"> и я использую RegularExpressionValidator, чтобы проверить длину того, что вводит пользователь.

Спасибо, Андрей

Ответы [ 3 ]

12 голосов
/ 24 октября 2009

Вы можете использовать опцию RegexOptions.Singleline при проверке ввода. Это обрабатывает ввод как однострочный оператор и анализирует его как таковой.

В противном случае вы можете попробовать следующее выражение:

^(.|\s){1,500}$

Это должно работать в многострочных вводах.

0 голосов
/ 24 октября 2009

Невозможность установить RegexOptions портит вас здесь. Так как это в RegularExpressionValidator, вы можете попробовать установить параметры в самом регулярном выражении.

Я думаю, что это должно работать:

(?s)^.{1,500}$

Часть (? S) включает опцию Singleline, которая позволяет точке соответствовать каждому символу, включая перевод строки. Что бы это ни стоило, в этой статье также перечислены другие RegexOptions и обозначения, необходимые для их установки в виде встроенного оператора.

0 голосов
/ 24 октября 2009

Можете ли вы обрезать разрывы строк перед проверкой длины строки?Это было бы легко сделать при проверке на стороне сервера.(В .net вы можете использовать для этого специальный валидатор)

С точки зрения UX, я бы также реализовал клиентский «счетчик символов».Там много чего можно найти.У jQuery есть несколько вариантов.Затем вы можете реализовать пользовательский валидатор для запуска только на стороне сервера, а затем использовать счетчик символов в качестве проверки на стороне клиента.Гораздо приятнее для пользователя видеть, сколько символов осталось, пока они печатают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...