我正在尝试在一大段文本中进行多次替换,并将单词转换为带有 HTML 标记的超链接。我发现使用表达式(\b)(word)(\b)
大部分时间都可以找到我想要的单词,但一个问题是尖括号 (<
和>
) 显然算作边界,所以当我在同一个字符串上再次运行表达式时,我匹配我已经转换为链接的单词。我刚才在表达式中找到了一种解决方法([\s-_()])(word)([\s-_()])
,但这需要我知道单词周围允许哪些字符而不是不允许字符。那么有没有一种方法可以让我表达“将这个词与除<
and之外的边界匹配>
?
注意 - 我不能使用全局标志。这意味着用于在文本块中进行“n”个替换,介于 1 和 all 之间。
前任
var str = "Plain planes are plain. Plain pork is plain. Plain pasta is plainly plain.";
str = str.replace(/(\b)(plain)(\b)/, "$1<a href='www.plain.com'>$2</a>$3");
// this will result in the first instance of 'plain' becoming
// a link to www.plain.com
str = str.replace(/(\b)(plain)(\b)/, "$1<a href='www.plain.com'>$2</a>$3");
// this will NOT make the second instance of 'plain' into
// a link to www.plain.com
// instead, the 'plain' in the middle of the anchor tag
// is matched and replaced causing nested anchor tags