次のjavascript正規表現を変更する必要があります。これはnegative lookbehindで、Firefoxでエラーがスローされるためです。
content = content.replace(/(?![^<]*>)(?:[\"])([^"]*?)(?<!=)(?:[\"])(?!>)/g, '„$1“');
誰もがアイデアを持っているし、私を助けることができますか?
前もって感謝します!
LookbehindsはECMA2018標準をサポートするブラウザーでのみ使用できます。つまり、Chromeの最新バージョンのみがそれらを処理できます。
大半のブラウザをサポートするには、パターンを先読みのみを使用するように変換します。
(?<!=)
負の後読みは、現在の場所のすぐ左に=
がないことを確認します。 [^"]
は、その文字と一致するatomです(?
量指定子はオプションになりますが、"
の前にある[^"]
は可能です] tは=
であり、その位置を制限する必要はありません)。
だから、あなたは使うことができます
content = content.replace(/(?![^<]>)"([^"=]?)"(?!>)/g, '„$1"');
^^^^^
(?:[\"])
は"
と等しいことに注意してください。 [^"=]?
は、"
および=
以外の文字の1回または0回の出現に一致します。
regex demo を参照してください。
正規表現(?![^<]*>)"([^"]*?)(?<!=)"(?!>)
後読みのアサーションなしでは:
(?![^<]*>)"((?:[^"=]+|=(?!"))*)"(?!>)
読みやすいバージョン
(?! [^<]* > )
"
( # (1 start)
(?:
[^"=]+
|
=
(?! " )
)*
) # (1 end)
"
(?! > )
これはあなたが選んだ答えとは異なり、notと同等です。