1

我正在尝试在一大段文本中进行多次替换,并将单词转换为带有 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
4

1 回答 1

0

您可以尝试消极的回顾,例如:

(?<!<a href='www\.)(\b)(plain)(\b)

于 2012-12-18T08:17:59.493 回答