Regex, чтобы позволить текст, некоторые специальные символы и держать ниже указанной длины - PullRequest
3 голосов
/ 16 декабря 2009

Я пытаюсь создать проверочное выражение, которое проверяет длину ввода и допускает текст и знаки препинания (например,?;:! "£ $%)

На данный момент я придумал "^\s*(\w\s*){1,2046}\s*$", но это не позволит использовать знаки препинания. Честно говоря, я довольно отрывочен в этой области, поэтому любая помощь будет принята с благодарностью!

Спасибо

Steve

Ответы [ 5 ]

7 голосов
/ 16 декабря 2009
^[\w\s.,:;!?€¥£¢$-]{0,2048}$

^ - начало строки / строки
[] - Класс персонажа
\w - слово символа
\s - пробел
.,:;!?€¥£¢$- - Знаки пунктуации и специальные символы
{} - Количество повторений (мин., Макс.)
$ - конец строки / строки

1 голос
/ 16 декабря 2009

Возможно, вы уже знаете это, но: защита от злонамеренного ввода должна выполняться на стороне сервера, а не в форме проверки на стороне клиента. Черные шляпы не упустят глаз в обход вашего сценария.

Я думаю, что в большинстве популярных веб-интерфейсов есть библиотечный код для очистки ввода. Одно только короткое регулярное выражение достаточно надёжно для защиты от атаки SQL-инъекцией.

1 голос
/ 16 декабря 2009

Если вы хотите разрешить текст и пунктуацию, что вы хотите исключить? Цифры? \ D даст вам все, что не является цифрой

1 голос
/ 16 декабря 2009

Это должно сделать это:

^\s*([\w,\?;:!"£$%]\s*){1,2046}$

Обратите внимание, что это вообще не ограничивает длину ввода, оно только ограничивает количество непробельных символов.

Чтобы ограничить длину, вы можете использовать положительный прогноз, который соответствует только определенному диапазону длины:

^(?=.{1,2046}$)\s*([\w,\?;:!"£$%]\s*)+$

(Верхний предел количества символов, не являющихся пробелами, не имеет смысла, если он равен длине. + - это сокращение от {1,}, требующее хотя бы одного символа, не являющегося пробелом.)

0 голосов
/ 16 декабря 2009

Это регулярное выражение должно соответствовать всем вашим персонажам и ограничивать ввод:

^\s*([\w\s\?\;\:\!\"£\$%]{1,2046})\s*$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...