Javascript Regex, чтобы отменить совпадение в указанном теге c html и сопоставить с другими? - PullRequest
0 голосов
/ 06 апреля 2020

Мне нужно сопоставить слова в HTML, но нужно пропустить тег (с указанным c class) и его содержимое. Пример:

<p> There is my way <span class="abc"> way beyond someone </span></p>

Мне нужно сопоставить только первое way слово. До сих пор я использую границу слова, чтобы выбрать слово. /\b(way)\b/ig, но в приведенном ниже сценарии происходит сбой.

<p> There is nothing. <span class="abc"> Way beyond someone </span></p>

В этом утверждении я не хочу ничего сопоставлять, поскольку way находится внутри элемента span.abc.

Я пытался ^ оператор, но, кажется, не работает. т.е. /(\b)way(\b)^("abc">the)/ig

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

я попробовал это другим способом ... он возвращает совпавшую строку без слова "Путь" ....

var str="<p> There is nothing. <span class=\"abc\"> Way beyond someone 
</span></p>";
var x=str.split(" ")
//console.log(x);
for(var i=0;i<x.length;i++)
{
    //console.log(x[i])
    if(x[i]!="Way")
{
    console.log(x[i])

}

}

надеюсь, что это полезно ...

0 голосов
/ 06 апреля 2020

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

way

Соответствует все время, когда появляется это слово

<span.*?>(.|\n)*?way(.|\n)*?<\/span>

Соответствует всем элементам span. Тогда вы не сможете получить все совпадения для первого регулярного выражения, которые не были сопоставлены вторым.

...