テキストの大きなブロックで複数の置換を行い、単語を HTML タグ付きのハイパーリンクに変換しようとしています。ほとんどの場合、式を使用する(\b)(word)(\b)
と必要な単語を見つけることができますが、問題の 1 つは、山かっこ (<
および>
) が明らかに境界としてカウントされることです。そのため、同じ文字列に対して式を再度実行すると、すでにリンクに変換した単語。式で回避策を見つけました([\s-_()])(word)([\s-_()])
が、これには、文字を禁止するのではなく、単語の前後にどの文字を使用できるかを知る必要があります。<
では、「この単語をandを除く境界と一致させる」という表現を作成する方法はあり>
ますか?
注 - グローバル フラグは使用できません。これは、テキストのブロック内で、1 からすべての間のどこかで「n」回の置換を行うために使用することを意図しています。
元
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