Regex 正则表达式-选择与类不在范围内的单词

Regex 正则表达式-选择与类不在范围内的单词,regex,replace,html-parsing,Regex,Replace,Html Parsing,我有以下几点- var pattern = new RegExp("(\\b" + value + "\\b)", 'gi') if (pattern.test(text)) { text = text.replace(pattern, "<span class='class1'>$1</span>"); } (e.g. value = 'text', text = 'Simple text <span class='class1'>simple t

我有以下几点-

var pattern = new RegExp("(\\b" + value + "\\b)", 'gi')
if (pattern.test(text)) {
    text = text.replace(pattern, "<span class='class1'>$1</span>");
}

(e.g. value = 'text', text = 'Simple text <span class='class1'>simple text</span> text.')
var pattern=newregexp(“(\\b”+value+“\\b)”,“gi”)
if(模式测试(文本)){
text=text.replace(模式,“$1”);
}
(例如,值='text',text='Simple text简单文本')
有了这个JS,我用span标签包装了所有的“文本”单词。但在本例中,我将使用span标记将第二个“text”字双重包装。我需要替换所有等值变量的单词,但是如果这个单词已经在Class1的范围内,我需要跳过这个单词

例如: 最初的文本是:“当使用备选方案时,顺序很重要,因为匹配算法将首先尝试匹配最左边的备选方案。”。我需要包装所有的“使用替代品”和“替代品”单词。首先,我们替换“使用替代品”,结果将是:

"When <span class="class1">using alternative</span>, the order is important since the matching algorithm will attempt to match the leftmost alternative first."
“使用替代方案时,顺序很重要,因为匹配算法将首先尝试匹配最左边的替代方案。”
然后,我们替换“备选方案”:

“使用备选方案时,顺序很重要,因为匹配算法将首先尝试匹配最左边的备选方案。”。

因此,我有第一个“替代”包装2跨度标签。我不需要“alternative”的第二个标记,只要有“using alternative”就足够了。

规则1,不要用正则表达式解析HTML。规则2,如果您想使用正则表达式解析HTML,请参见规则1(向原作者致歉)啊!我明白了,所以只有当文本尚未包装时才想包装它?是的。如果“文本”不在范围内,我想用范围将其包装。此外,如果span不仅包含“text”,例如“text word”,那么也不应包装此“text”。@Sanya530是否可以发布一个示例HTML,说明在没有span的情况下显示值的位置?不要使用正则表达式来解析HTML。使用适当的HTML解析模块。您无法用正则表达式可靠地解析HTML,在这条路上您将面临悲伤和挫折。一旦HTML改变了您的预期,您的代码就会被破坏。有关如何使用已编写、测试和调试的PHP模块正确解析HTML的示例,请参见或。
"When <span class="class1">using <span class="class1">alternative</span></span>, the order is important since the matching algorithm will attempt to match the leftmost <span class="class1">alternative</span> first.".