Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Вопрос про регулярное выражение в js (https://javascript.ru/forum/css-html/61579-vopros-pro-regulyarnoe-vyrazhenie-v-js.html)

12345678 24.02.2016 18:19

Вопрос про регулярное выражение в 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[+][)], но не срабатывает :-(.

рони 24.02.2016 18:29

Цитата:

Сообщение от 12345678
Компьютер \(18\+\), но не работает.

два слеша нужно а не один

12345678 24.02.2016 18:46

рони,
Попробовал так Компьютер \\(18\\+\\) и так Компьютер \\(18+\\)
Всё равно не срабатывает...

рони 24.02.2016 18:50

12345678,
var patt = new RegExp('(качать на android|подписывайтесь!|сделать репост|заходи и смотри|доставка почтой|vk[.]com[/]a_samez|вступай к нам|Компьютер \\(18\\+\\))',
	'mi');
    alert(patt.test('Компьютер (18+)'))

12345678 24.02.2016 18:52

рони,
Оказывается если запись последняя в списке, как в приведённом скрипте, то не сработает, а если после неё разделитель и очередное слово-фильтр то всё успешно срабатывает.
Спасибо! :-)

рони 24.02.2016 19:14

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


Часовой пояс GMT +3, время: 04:51.