2013-07-28 7 views
14

से मेल खाता है Internet Explorer 10 में, यह:/.?e.?/ पूरी स्ट्रिंग, बल्कि उम्मीद से सबस्ट्रिंग

'abcdefghi'.match(/.?e.?/) 

, ['def'] का मूल्यांकन के रूप में मैं उम्मीद थी, लेकिन फ़ायरफ़ॉक्स 21.0 में, यह करने के लिए मूल्यांकन करता है ['abcdefghi']। (this jsFiddle देखें।) मुझे कुछ अन्य रेगेक्स के लिए अप्रत्याशित व्यवहार मिलता है जो वैकल्पिक सामग्री के साथ शुरू और समाप्त होते हैं, जैसे कि /.?e.{0,2}/ और /.{0,2}e.{0,2}/; हालांकि, टिप्पणीकर्ता /\S?e\S?/ और /(?:.?e.?)/ जैसे विभिन्न समान regexes इंगित करते हैं, प्रभावित नहीं हैं। यह replace विधि पर लागू होता है।

क्या मुझे कुछ याद आ रही है? क्या इस व्यवहार के लिए कुछ गहरा कारण है?

+0

ठीक है क्रोम में: 'ई डी ef इस के लिए cdef' +1। –

+1

ठीक है, एक समूह जोड़ना * सही * लगता है: 'abcdefghi'match (/ (?:।? E।?) /)'। लेकिन, मैं बग अनुमान लगा रहा हूँ। –

+0

एक ही मुद्दा फ़ायरफ़ॉक्स 22 में दिखाई देता है, लेकिन यह ध्यान दिया जाना चाहिए कि '' /.?.?/ ठीक से काम करता है, '/ ई।? /' और '/।? ई /' – SheetJS

उत्तर

6
(अंतर्निहित उपसमूह पूरी स्ट्रिंग regex मिलान किया युक्त)

जैसा कि टिफ़ोन ने कहा, यह स्पाइडरमोन्की (फ़ायरफ़ॉक्स का जावास्क्रिप्ट इंजन) में एक बग है।

स्पाइडरमोन्की में, हम सफारी के जावास्क्रिप्टकोर जेएस इंजन से RegExp इंजन का उपयोग करते हैं, और उस से बग विरासत में मिला है। मैंने जेएससी में बग के लिए bug 119191 दायर किया।

2

एक बग की तरह दिखता है। मैंने an issue दायर किया।

Btw, निम्नलिखित काम ठीक:

'abcdefghi'.match(/.e./) 
'abcdefghi'.match(/.e.?/) 
'abcdefghi'.match(/.?e./) 
'abcdefghi'.match(/[a-z]?e.?/) 
'abcdefghi'.match(/.?e[a-z]?/) 

http://jsfiddle.net/afDqC/1/

+0

+1, धन्यवाद! यह दुर्भाग्यपूर्ण है कि मैं दो उत्तरों को स्वीकार नहीं कर सकता। । । – ruakh

+0

@ruakh कोई समस्या नहीं, धन्यवाद! – tiffon

0

कहा अन्य उत्तर के रूप में, यह एक बग प्रतीत होता है।

हालांकि, वहाँ एक आसान तरीके को उपलब्ध है: 'abcdefghi'.match(/(.?e.?)/)

इस तरह आप प्राप्त दोनों [0] में सही परिणाम और [1] (उपसमूह () द्वारा निर्दिष्ट)

+0

दरअसल, जोनाथन Lonowski इस बाहर ऊपर एक टिप्पणी में बताया था (हालांकि वह एक गैर पर कब्जा समूह, '/ (का उपयोग करते हुए सुझाव दिया था?।?।? ई) /', जो है * कोई * इस के आसपास काम कर के अलावा अन्य प्रभाव बग)। – ruakh

संबंधित मुद्दे