Как отфильтровать текстовое поле абзаца формы Sitefinity, чтобы запретить URL-адреса? - PullRequest
0 голосов
/ 07 января 2020

Моя компания получает несколько (3-5) спам-сообщений в день через контактную форму клиента. Используемая нами reCaptcha по какой-то причине не блокирует их, но их так мало, что, возможно, речь идет о реальном человеке.

Единственное, что у них общего, - это какая-то URL-ссылка в текстовом поле абзаца. предназначен для дополнительных комментариев. У реальных клиентов нет никаких причин размещать URL-адреса, поэтому мы решили, что можем просто установить проверку, чтобы исключить их и назвать это днем. Но я не могу заставить его работать.

При редактировании текстового поля я перешел в Advanced> Model> ValidatorDefinition, чтобы я мог ввести свой код регулярного выражения для запрета чего-либо с помощью http / https / ftp:

^(?!((http[s]?|ftp):\/)?\/?)

Но у меня возникают проблемы с определением, в какое поле это ввести и какие другие поля мне нужно изменить, чтобы убедиться, что это работает правильно. Из этой статьи кажется, что поле ExpectedFormat должно быть Custom, но где мой код регулярного выражения go? Помещение его в поле RegularExpression активирует RegularExpressionViolationMessage для любого контента, не только для URL, поэтому я подозреваю, что мои регулярные выражения могут быть неправильными, даже если они у меня в нужном месте.

1 Ответ

0 голосов
/ 07 января 2020

Я не могу говорить в части конфигурации. Связанные документы выглядят довольно ясно.
Если вы находитесь в динамическом c модуле, этот пост может помочь:

Вы можете найти поле регулярных выражений в ModuleBuilder модуль -> Ваш модуль -> Тип вашего модуля -> Нажмите на нужное поле для проверки регулярного выражения -> выберите вкладку «ограничение» (пример).

Что касается самого регулярного выражения, попробуйте это так ( demo )

^((?!(?:(https?|ftp)(?::\/\/))).)*$

Возможно, вам понадобится добавить (?s) однострочный флаг: (?s)^((?!(?:(https?|ftp)(?::\/\/))).)*$

...