猿问

Javascript正则表达式丢弃特定html标签中的匹配并匹配其他标签?

我需要匹配 HTML 中的单词,但需要跳过标签(具有特定类)及其内容。例子:

<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元素内部。

我试过^运营商,但似乎没有用。IE/(\b)way(\b)^("abc">the)/ig


小唯快跑啊
浏览 117回答 2
2回答

慕的地10843

我用另一种方法尝试过......它返回匹配的字符串,没有“Way”这个词......var str="<p> There is nothing. <span class=\"abc\"> Way beyond someone&nbsp;</span></p>";var x=str.split(" ")//console.log(x);for(var i=0;i<x.length;i++){&nbsp; &nbsp; //console.log(x[i])&nbsp; &nbsp; if(x[i]!="Way"){&nbsp; &nbsp; console.log(x[i])}}希望对您有所帮助...

慕婉清6462132

我不知道一种方法来做你想做的事,但你可以对所有匹配使用一个正则表达式,对你想要丢弃的那些使用另一个正则表达式,然后只在一个匹配中使用匹配而不在另一个匹配中使用。在您的示例中:way匹配该词出现的所有时间<span.*?>(.|\n)*?way(.|\n)*?<\/span>匹配所有 span 元素。然后你不能得到第一个正则表达式的所有匹配项,而第二个正则表达式不匹配。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答