Intereting Posts
Что касается for (), зачем использовать i ++, а не ++ i? Как остановить загрузку большого размера при загрузке? Здесь, кажется, есть ошибка, но я этого не вижу. Запрос работает, но эхо не так! Php: автозаполнение формы с использованием переменных $ _SESSION с несколькими php-файлами Конкретный японский символ не отображается правильно в PDF Определение значений по умолчанию для полей формы Laravel Функция PHP Аноним с array_walk Magento – программно отключить автоматическое индексирование Получить все имена FUNCTIONS из всех CONTROLLERS в Codeigniter Как проверить, существует ли файл на удаленном сервере с помощью PHP? Как вставить данные в столбцы из PHP в MariaDB? PHP – длительная фоновая задача Сортировка массива объектов по полям объекта Почему возникает эта ошибка PHP: «Строгие стандарты: mysqli :: next_result (): следующего набора результатов нет».? Symfony 3 – Вы запросили несуществующий сервис, который сводит меня с ума

Сравнение массива слов с текстовым полем с помощью javascript

У меня есть текстовое поле внутри формы.

Перед отправкой формы текстовое поле проверяется и проверяется, чтобы оно не было пустым, а не более 2000 символов, не содержало запрещенных символов и т. Д. …

Я работаю над последней частью проверки, которая требует, чтобы textarea сравнивалась с массивом «плохих слов».

Это поможет мне сохранить и сохранить хороший «язык» на моем сайте.

Я не очень хорошо разбираюсь в js, так кто-нибудь знает способ сравнить каждое слово textarea с массивом плохих слов?

Кроме того, это значительно снизит валидацию? (массив содержит не более 100 слов).

благодаря

Если вы хотите проверить наличие «expletive1» и «expletive2», вы сделали бы следующее:

my_textarea = document.getElementById('textarea_id'); if (/\b(?=\w)(expletive1|expletive2)\b(?!\w)/i.test(my_textarea.value)) { // we found bad words! do something } else { // no bad words found, carry on, nothing to see here } 

И вы просто добавили бы больше слов в список таким же образом (expletive1 | expletive2 | expletive3 | expletive4)

Имейте в виду, что для полного сохранения слов из вашего приложения вам также потребуется выполнить фильтрацию на стороне сервера.

 var bad_words = ['stupid', 'dang']; // watered down for (var i = 0; i <= bad_words.length; i++) { if (document.getElementById('my_textarea').value.match(bad_words[i])) { // has bad word! } } 

Это сохранит ваш код немного аккуратнее, потому что вам не нужно иметь 100 слов в одном регулярном выражении.

Этот код заменяет плохие слова на *****

 // creating regex var words = ['bad', 'words']; var wordsStr = ""; for(var i=0; i<words.length; i++) { wordsStr += words[i]; if (i < words.length -1) { wordsStr += "|"; } } // wordsStr is "bad|words" var regex = new RegExp(wordsStr, "gi"); // g: replace all; i:insensitive // replacing var text = "I cant say bad words!"; text = text.replace(regex, "****"); // text is "I cant say **** ****!" 

См. В jsfiddle

 var bad_words = new Array('word1', 'word2'); var user_words = document.getElementById('textarea').split(/\W+/); for( var i in bad_words) { if( user_words.indexOf( bad_words[i] ) != -1 ) { alert( 'The textarea has bad word!'); break; } } 

Вы можете сфокусировать меня, если хотите, но, возможно, просто не сделайте ошибку clbuttic, пытаясь отфильтровать в первую очередь: D