2010-07-05 8 views
11

हम पाते हैं और से अलग सभी गैर अक्षरांकीय अक्षर को बदलने के लिए निम्नलिखित js/regex उपयोग किया गया है - और +रेगुलर एक्सप्रेशन से (में जावास्क्रिप्ट को खोजने/बदलें) - गैर अक्षरांकीय अक्षर से मेल खाते हैं, लेकिन उपेक्षा - और +

outputString = outputString.replace(/[^\w|^\+|^-]*/g, "");

हालांकि यह पूरी तरह से काम नहीं करता है - यह^और | वर्ण। मैं मदद नहीं कर सकता लेकिन आश्चर्यचकित हूं कि यह^और | के साथ कुछ करने के लिए है रेगेक्स में मेटा-कैरेक्टर के रूप में इस्तेमाल किया जा रहा है।

मैंने [\W|^+|^-] का उपयोग करने के लिए स्विच करने का प्रयास किया है, लेकिन यह - और + को प्रतिस्थापित करता है। मैंने सोचा कि संभवतः एक लापरवाही दावा जवाब हो सकता है, लेकिन मुझे यकीन नहीं है कि उन्हें कैसे कार्यान्वित किया जाए।

क्या किसी को यह पता चला है कि इसे कैसे पूरा किया जाए?

उत्तर

16

चरित्र वर्गों प्रत्यावर्तन करना नहीं है, इसलिए क्यों | शाब्दिक है, और ^ वर्ग को प्रभावी बनाने के के शुरू में होना चाहिए (अन्यथा यह सचमुच का इलाज किया जाता है।)

उपयोग करें:

[^\w+-]+ 

(इसके अलावा, यदि - अंतिम नहीं है, तो इसे एक वर्ण वर्ग के अंदर \- से बचने की आवश्यकता है - इसलिए सावधान रहें यदि अपवाद सूची में अधिक वर्ण जोड़े जा सकते हैं)।

आप भी इस तरह एक नकारात्मक अग्रदर्शी साथ यह कर सकता है:

(?![+-])\W 

ध्यान दें: आप नहीं एक * या + कि \W के बाद चाहते हैं, के बाद से अग्रदर्शी केवल तुरंत बाद चरित्र पर लागू होता है (और g ध्वज प्रतिस्थापित होने तक प्रतिस्थापन दोहराता है)।

यह भी ध्यान दें कि \w और \W एक शब्द चरित्र के रूप में _ पर विचार करें। यदि यह वांछित नहीं है तो उसे बदलने के लिए आप (?![+-])[\W_] (या पहले अभिव्यक्तियों में स्पष्ट श्रेणियों का उपयोग कर सकते हैं) का उपयोग कर सकते हैं।

+0

हाय पीटर, धन्यवाद - यह बहुत अच्छा है। [^\w+-]+ बस महान काम किया! और अतिरिक्त जानकारी के लिए धन्यवाद - बहुत उपयोगी। –

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