2015-07-27 3 views
2

Этого вопрос в продолжении Regex match whole word including whitespace and fullstopУгловой JS регулярного выражения заменить

регулярного выражения, что я, наконец, в конечном итоге, используя это (<(p|li)\b[^<>]*>[^<>\n]*)\b(Cat|Dog|Fish)\b([^<>\n]*<\/\2>)

Теперь, мне нужно заменить подходящее слово с каким-либо другим HTML.

Vks, который помог мне создать это регулярное выражение, сообщил, что я могу получить доступ к переменной $3, чтобы получить совпадающее слово. Но я не могу сделать эту работу. (https://regex101.com/r/oC5rY5/12#javascript)

Я пытаюсь заменить в Angular JS, что я не очень хорошо знаком.

html.replace(regex, function(fullMatch, match) { 
    if (angular.isString(match)) { 
     var abc = fullMatch.length > match.length ? fullMatch[0] : ''; 

     //Custom function to fetch data based on the matched word. 
     var obj = $scope.getMoreInfo(match); 
     if (angular.isObject(obj)) { 
      return abc + '<div class="test123" url="' + obj.Url + '" text="' + match + '">' + match + '</div>'; 
     } 
    } 
    return fullMatch; 
}); 

Как я могу получить доступ к $3 здесь? match не возвращает совпадающее слово. Пробовал использовать match[3], но это тоже не работает.

Обратите внимание: моя замена не только для 1 строки, но и для всей страницы HTML, поэтому она должна быть рекурсивной.

+0

это может помочь вам http://stackoverflow.com/questions/432493/how-do-you-access-the-matched-groups-in- a-javascript-regular-expression – vks

+0

Я посмотрел на него, @vks. Он не работает с кучей строк HTML. – NomadTraveler

ответ

0

Вы можете получить согласованные группы взамен функции с помощью позиционных аргументов. Первый аргумент - это совпадение, тогда p1, p2 and so on - это сопоставленные группы. Поэтому в вашем случае вы можете получить третий матч, как это.

html.replace(regex, function(match, p1, p2, p3, p4) { 
    console.log(p3); 
}); 

Для получения дополнительной информации см ссылку здесь https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter

+0

Приветствия. Это работает. – NomadTraveler

Смежные вопросы