我有这个Regex表达式,可以在chrome中使用,但在Firefox中不起作用。 SyntaxError: invalid regexp group
它与lookbehinds有关,而Firefox不支持这些。我需要这个才能在Firefox中工作,有人可以帮我转换吗 这样它就可以在Firefox中运行并且也可以过滤掉标签?
return new RegExp(`(?!<|>|/|&|_)(?<!</?[^>]*|&[^;]*)(${term})`, 'gi');
};
searchTermsInArray.forEach(term => {
if (term.length) {
const regexp = this.regexpFormula(term);
newQuestion.qtiData.prompt = newQuestion.qtiData.prompt.replace(regexp, match => {
return `<span class="highlight">${match}</span>`;
});```
In chrome it filters out the html tags and returns the search term with a <span class="highlight">.
答案 0 :(得分:0)
您可以尝试解决问题,而不用消极的后面:反之,匹配您不想要的东西。如果您的回调中有该文件,请确保不要突出显示。
注意:我不确定开始时否定的前瞻性是什么,因为您可以轻松地确保搜索词不是以列出的值开头,并且会产生相同的结果,所以我让它分开。
let regexp = new RegExp(`(&[^;]*|</?[^>]*)?(${term})`, 'gi');
haystack.replace(regexp, (match, ignore, term) => ignore ? match : `<span class="highlight">${term}</span>`);