Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.02.2016, 18:19
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

Вопрос про регулярное выражение в js
Прошу сильно не пинать за ламерский вопрос. Есть UserJS, скрывающий рекламные посты в социальной сети Вконтакте. Хочу расширить его фильтр.

function vanillafeed() {
	var li = document.getElementsByClassName("wall_text");
	var patt = new RegExp('(качать на android|подписывайтесь!|сделать репост|заходи и смотри|доставка почтой|vk[.]com[/]a_samez|вступай к нам|Компьютер (18+) )',
	'mi');
			
	for (var i = 0; i < li.length; i++) {
		if (li[i].getAttribute('vfx') != 'true') {
			li[i].setAttribute('vfx', 'true');	
            if ( patt.test(li[i].innerHTML) == true ) {
				li[i].parentNode.parentNode.setAttribute('style','display: none;');
			}
		}
	}
}
setInterval(vanillafeed, 1000);


В оригинальном скрипте были лишь такие варианты ...|триумфальн|избирательн|о ппозиц|госдум|единая\sросс|. .. и подсмотреть как сие реализовать нет возможности. Методом тыка выяснил, что такой вариант срабатывает vk[.]com[/]a_samez при наличии в посте ссылки, а вот на текст, который имеет в своём составе символы никак не желает срабатывать соответствующий ему введённый вариант ( например Компьютер (18+) ) Пробовал так Компьютер \(18\+\) и вот так Компьютер [(]18[+][)], но не срабатывает :-(.

Последний раз редактировалось 12345678, 24.02.2016 в 18:37.
Ответить с цитированием
  #2 (permalink)  
Старый 24.02.2016, 18:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от 12345678
Компьютер \(18\+\), но не работает.
два слеша нужно а не один
Ответить с цитированием
  #3 (permalink)  
Старый 24.02.2016, 18:46
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

рони,
Попробовал так Компьютер \\(18\\+\\) и так Компьютер \\(18+\\)
Всё равно не срабатывает...
Ответить с цитированием
  #4 (permalink)  
Старый 24.02.2016, 18:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

12345678,
var patt = new RegExp('(качать на android|подписывайтесь!|сделать репост|заходи и смотри|доставка почтой|vk[.]com[/]a_samez|вступай к нам|Компьютер \\(18\\+\\))',
	'mi');
    alert(patt.test('Компьютер (18+)'))
Ответить с цитированием
  #5 (permalink)  
Старый 24.02.2016, 18:52
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

рони,
Оказывается если запись последняя в списке, как в приведённом скрипте, то не сработает, а если после неё разделитель и очередное слово-фильтр то всё успешно срабатывает.
Спасибо! :-)
Ответить с цитированием
  #6 (permalink)  
Старый 24.02.2016, 19:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

12345678,
может у вас где пробел лишний был
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос...все таки про overflow: hidden bayah (X)HTML/CSS 2 14.07.2012 09:31
Помогите написать регулярное выражение! Dorian_bs Общие вопросы Javascript 7 09.12.2011 09:12
регулярное выражение leny Общие вопросы Javascript 1 24.09.2011 17:30
регулярное выражение martinss jQuery 5 29.07.2011 12:46
Вопрос про отправку данных методом Post QQQ AJAX и COMET 1 15.07.2009 23:27