Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Два варианта паттерна для регулярки. Один работает, другой нет (https://javascript.ru/forum/misc/55389-dva-varianta-patterna-dlya-regulyarki-odin-rabotaet-drugojj-net.html)

izcian 25.04.2015 18:39

Два варианта паттерна для регулярки. Один работает, другой нет
 
Здравствуйте.
Нужно вырезать из строки div с определенным data-street-id. В первом варианте, работает. Во втором, почему-то нет. Не могу понять почему?
var string = '<div data-street-id="1">1-я Абельмановская Застава, площадь<span title="Удалить улицу из поиска" onclick="drop_Street(1)">Х</span></div><div data-street-id="5">Таганрогская улица <span title="Удалить улицу из поиска" onclick="drop_Street(5)">Х</span></div>';
// Превый вариант - работает
	pattern = /(<div data-street-id="5">)(\d*\D*\s*\S*\w*)?(<\/div>)/gi;
	
	alert(string.replace(pattern, ''));

// Второй вариант -  не работает
	var id = 5;
	
	var val = '(<div data-street-id="'+id+'">)(\d*\D*\s*\S*\w*)?(<\/div>)';
	
	var pattern = new RegExp(val, "gi");
	
	alert(string.replace(pattern, ''));

Aetae 25.04.2015 19:27

\ -> \\

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

рони 25.04.2015 19:35

izcian,
var val = '(<div data-street-id="'+id+'">)(\\d*\\D*\\s*\\S*\\w*)?(<\/div>)';

izcian 25.04.2015 19:45

Цитата:

Сообщение от рони (Сообщение 368240)
izcian,
var val = '(<div data-street-id="'+id+'">)(\\d*\\D*\\s*\\S*\\w*)?(<\/div>)';

Спасибо! Блин...вот я балбес)))


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