मैं एक वैकल्पिक अग्रदर्शी पाने के लिए कोशिश कर रहा हूँ लेकिन समस्याओं जहां जैसे ही मैं कर के रूप में यह वैकल्पिक (यह बाद एक ?
जोड़ें) चल रहा है, यह अब से मेल खाता है, तब भी जब डेटा नहीं है।वैकल्पिक regex अग्रदर्शी
एक संक्षिप्त सारांश रूप में, मैं एक URI से बाहर विशिष्ट क्वेरी स्ट्रिंग पैरामीटर खींचने की कोशिश कर रहा हूँ। उदाहरण:
/.*foo.html\??(?=.*foo=([^\&]+))(?=.*bar=([^\&]+))/
.exec('foo.html?foo=true&bar=baz')
मुझे लगता है कि बाहर एक सा निकाल लेंगे:
.*foo.html\?? // filename == `foo.html` + '?'
(?=.*foo=([^\&]+)) // find "foo=...." parameter, store the value
(?=.*bar=([^\&]+)) // find "bar=...." parameter, store the value
ऊपर के उदाहरण शर्त यह है कि foo
और bar
दोनों क्वेरी स्ट्रिंग में पैरामीटर के रूप में मौजूद तहत पूरी तरह से काम करता है। मुद्दा यह है कि मैं इन वैकल्पिक बनाने के लिए कोशिश कर रहा हूँ है, इसलिए मैं करने के लिए इसे बदल दिया है:
/.*foo.html\??(?=.*foo=([^\&]+))?(?=.*bar=([^\&]+))?/
↑ ↑
Added these question marks ─┴──────────────────┘
और हालांकि यह अभी भी foo.html
से मेल खाता है यह अब किसी भी मानकों से मेल खाता है,। कोई विचार? लुक-आगे में प्रश्न चिह्न लगाने के लिए
आप इस के लिए नियमित अभिव्यक्ति क्यों प्रयोग कर रहे हैं? बस स्ट्रिंग को विभाजित करें और किसी ऑब्जेक्ट में कुंजी/मान जोड़े को स्टोर करें। – ThiefMaster
@ थिफमास्टर - क्योंकि मैं चाहता हूं :) और मैं अब और भी करना चाहता हूं कि यह काम नहीं करेगा। हकीकत में, यह बस इसलिए है क्योंकि जब कोड को केवल 2 पैरा प्राप्त करने की आवश्यकता होती है तो कोड बहुत छोटा होता है। –
आपको लुकहेड की आवश्यकता क्यों है? Foo.html से मिलान करने के लिए? Bar = baz और foo = true भी? – Bergi