2011-09-04 12 views
5

क्या इन दोनों के बीच अंतर हैं?प्रतिस्थापन (/ [^ a-z0-9]/gi, '') के बीच मतभेद और प्रतिस्थापित करें (/ [^ a-zA-Z0-9]/g, '')

replace(/[^a-z0-9]/gi, ''); 
replace(/[^a-zA-Z0-9]/g, ''); 

इसके अलावा, वहाँ एक या एक और का उपयोग कर समय में किसी भी महत्वपूर्ण अंतर हैं?

संपादित करें: प्रदर्शन के बारे में, मैं कुछ परीक्षण किया था http://jsperf.com/myregexp-test

+1

नहीं, वे वही काम करते हैं – sdfadfaasd

+3

यह वास्तव में क्या करता है इसके बारे में जागरूक रहें। 'Na nave" .replace (/ [^ a-z0-9]/gi, ''); ' – NullUserException

+0

@NullUserException का प्रयास करें, लेकिन अंत में इस समस्या के लिए जेएस में कोई समाधान नहीं है। यहां तक ​​कि '\ W' वही करता है। – xanatos

उत्तर

5

नहीं, पहले से, अंत में i regex केस संवेदी अर्थ है कि यह कोई फर्क नहीं पड़ता बनाता पत्र यह पाता है अगर ऊपरी- या निचले मामले।

दूसरा मैचों ऊपरी- और निचले मामले के अक्षरों से मेल खाता है लेकिन यह सुनिश्चित करता है कि वे या तो ऊपरी या निचले मामले हैं। तो आप एक ही परिणाम के साथ खत्म हो जाते हैं।

+1

ध्यान रखें कि यह आम तौर पर सच नहीं है। उदाहरण के लिए, 'Σ',' σ', और 'ς' सभी केस-असंवेदनशील समकक्ष हैं, और यदि आप उन्हें '[Σσ]' जैसे वर्ण वर्ग में दो में से दोहराते हैं, तो आप उन्हें सब कुछ नहीं प्राप्त कर सकते थे, जैसा कि होगा अंतिम सिग्मा, 'ς' याद आती है। चूंकि जावास्क्रिप्ट यूनिकोड का समर्थन नहीं करता है, इसलिए आप यहां खराब हो गए हैं, लेकिन वास्तविक^एच^एच^एच^हनोर्मल भाषा में, केसफोल्डिंग उन सभी को '/ Σ/i' मैच में उठाएगी। – tchrist

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