javascript - जावास्क्रिप्ट regex फ़ायरफ़ॉक्स में काम नहीं कर नकारात्मक लग रही है




firefox regex-lookarounds (2)

Lookbehinds केवल ECMA2018 मानक का समर्थन करने वाले ब्राउज़रों में उपलब्ध है, और इसका मतलब है कि, क्रोम के केवल नवीनतम संस्करण ही उन्हें संभाल सकते हैं।

अधिकांश ब्राउज़रों का समर्थन करने के लिए, अपने पैटर्न को केवल लुकहेड्स का उपयोग करने के लिए परिवर्तित करें।

(?<!=) नकारात्मक दिखावटी सुनिश्चित करता है कि वर्तमान स्थान के बाईं ओर कोई = तुरंत नहीं है। [^"] वह परमाणु है जो उस चरित्र से मेल खाता है (ध्यान दें; मात्रात्मक इसे वैकल्पिक बनाता है, लेकिन " जो [^"] से पहले है [^"] = नहीं हो सकता है और उस स्थिति को प्रतिबंधित करने की कोई आवश्यकता नहीं है)।

तो, आप उपयोग कर सकते हैं

content = content.replace(/(?![^<]>)"([^"=]?)"(?!>)/g, '„$1"');
                                      ^^^^^

ध्यान दें कि (?:[\"]) बराबर है "[^"=]? और = और के अलावा एक वर्ण की 1 या 0 घटनाओं से मेल खाता है।

रेगेक्स डेमो देखें।

मुझे निम्नलिखित जावास्क्रिप्ट regex को संशोधित करने की आवश्यकता है क्योंकि इसमें मौजूद नकारात्मक लुकअप फ़ायरफ़ॉक्स में एक त्रुटि देता है:

content = content.replace(/(?![^<]*>)(?:[\"])([^"]*?)(?<!=)(?:[\"])(?!>)/g, '„$1“');

किसी को भी एक विचार है और मेरी मदद कर सकते हैं?

अग्रिम में धन्यवाद!


आपके रेगेक्स (?![^<]*>)"([^"]*?)(?<!=)"(?!>) सटीक समकक्ष

दिखावे के बिना दावा है:

(?![^<]*>)"((?:[^"=]+|=(?!"))*)"(?!>)

पठनीय संस्करण

 (?! [^<]* > )
 "
 (                             # (1 start)
      (?:
           [^"=]+ 
        |  
           = 
           (?! " )
      )*
 )                             # (1 end)
 "
 (?! > )

ध्यान दें कि यह आपके चुने हुए उत्तर की तरह नहीं है, जो एक समकक्ष नहीं है






regex-lookarounds