我有一个带有各种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正则表达式中借用了代码,用链接替换了一些单词,但不在现有链接中,而是将.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;
有什么建议?
将正则表达式构建为字符串时,请勿包含斜杠:
var regex = new RegExp(word + "(?![^<]*?<\/a>)","g");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句