将可在Chrome中使用的Regex表达式转换为可在Firefox中使用

时间:2019-06-25 18:09:51

标签: regex regex-lookarounds regex-negation regex-group regex-greedy

我有这个Regex表达式,可以在chrome中使用,但在Firefox中不起作用。 SyntaxError: invalid regexp group

它与lookbehinds有关,而Firefox不支持这些。我需要这个才能在Firefox中工作,有人可以帮我转换吗 这样它就可以在Firefox中运行并且也可以过滤掉标签?

        return new RegExp(`(?!<|>|/|&amp|_)(?<!</?[^>]*|&[^;]*)(${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">.

1 个答案:

答案 0 :(得分:0)

您可以尝试解决问题,而不用消极的后面:反之,匹配您不想要的东西。如果您的回调中有该文件,请确保不要突出显示。

注意:我不确定开始时否定的前瞻性是什么,因为您可以轻松地确保搜索词不是以列出的值开头,并且会产生相同的结果,所以我让它分开。

let regexp = new RegExp(`(&[^;]*|</?[^>]*)?(${term})`, 'gi');
haystack.replace(regexp, (match, ignore, term) => ignore ? match : `<span class="highlight">${term}</span>`);