我有一个包含各种html标签的字符串。例如:
var str = "<div>My text is <a> here</a> and it is <a> very wonderful</a>. For an example of how very great <a> my text is</a>. Please have a look</div>"
我想使用javascript string.replace()来仅替换不在标记内的单词(在本例中为锚)。它还取决于用户输入,因此我需要在RegExp中包含一个变量。我首先使用string.match()进行测试;验证我只得到一场比赛。
我从javascript regex replace some words with links, but not within existing links借用了代码,只是将.replace切换为.match。所以我使用以下代码:
var word = "very";
var regex = new RegExp("/" + word + "(?![^<]*?<\/a>)/g");
console.log(str.match(regex).length);
它回到我身边 TypeError:titleText.match(...)为null 这告诉我没有找到匹配。但是,如果我像这样构建它:
console.log(str.match("/very(?![^<]*?<\/a>)/g").length);
我得到了预期的结果数量;在这种情况下,1;
有什么建议吗?
答案 0 :(得分:2)
在将正则表达式构建为字符串时不要包含斜杠:
var regex = new RegExp(word + "(?![^<]*?<\/a>)","g");