2012-12-05 19 views
12

मैं एक बुनियादी स्ट्रिंग एक regex अभिव्यक्ति का उपयोग कर की जगह करने के लिए कोशिश कर रहा हूँ, लेकिन उत्तर मैं पाया है मदद करने के लिए नहीं है - वे सीधे एक व्यक्तियों कम या कोई स्पष्टीकरण के साथ अद्वितीय आवश्यकता का जवाब दे रहे हैं।regex स्ट्रिंग की जगह

मैं इस समय str = str.replace(/[^a-z0-9+]/g, ''); उपयोग कर रहा हूँ। '-' वर्ण लेकिन मुझे क्या करना चाहते हैं सभी अक्षरांकीय अक्षर (a-z और 0-9) और भी अनुमति देते हैं।

आप इस का जवाब और यह बताएं कि आप भाव जोड़ कृपया सकते हैं।

+0

स्क्वायर ब्रैकेट के अंदर '-' निर्दिष्ट करने के लिए एक बचने वाले वर्ण '\ -' का उपयोग करें। यह सुनिश्चित करेगा कि पार्सर '-' को शाब्दिक चरित्र के रूप में व्याख्या करता है, न कि एक विशेष वर्ण के रूप में एक विशेष वर्ण के रूप में। –

+0

jQuery को इसके साथ क्या करना है? Regex और स्ट्रिंग प्रतिस्थापन भाषा के दोनों हिस्सों हैं, jQuery शामिल नहीं है। उस टैग को हटा रहा है; अगर मैं गलत हूं, तो रोलबैक के लिए स्वतंत्र महसूस करें। – ssube

उत्तर

22

यह काम करना चाहिए:

str = str.replace(/[^a-z0-9-]/g, ''); 

यह दर्शाता है कि

  1. / इंगित करता है कि आप हर चरित्र क्या
  2. इस प्रकार के लिए इसी नहीं चाहते अपने पैटर्न परिसीमित करने के लिए ताकि आप समाप्त करने के लिए
  3. [] पैटर्न अपने एक विशिष्ट चरित्र
  4. ^ पर तलाश कर रहे हैं इंगित करता है एक शुरू करने के लिए और एक है यहाँ है
  5. a-z मैचों 'एक' और 'z' के बीच किसी भी चरित्र शामिल
  6. 0-9 '0' के बीच किसी भी अंकों से मेल खाता है और '9' (किसी भी अंकों अर्थ हों)
  7. - '-' वर्ण
  8. अंत में
  9. g एक विशेष पैरामीटर कह रहा है कि आप यदि आप अपने प्रतिमान मिलान पहले अक्षर पर रोकने के लिए बल्कि पूरे स्ट्रिंग पर जारी रखने के लिए regex नहीं करना चाहती

फिर अपने अभिव्यक्ति से पहले / द्वारा सीमांकित किया जाता है और बाद। तो यहां आप कहते हैं "हर चरित्र एक पत्र नहीं है, एक अंक या '-' स्ट्रिंग से हटा दिया जाएगा"।

3

बस बदलने +- रहे हैं:

str = str.replace(/[^a-z0-9-]/g, ""); 

आप इसे पढ़ सकते हैं के रूप में:

  1. [^ ]: सेट से नहीं मेल खाते हैं
  2. [^a-z0-9-]: से मेल नहीं तो a-z, 0-9 या -
  3. / /g: वैश्विक मैच

अधिक जानकारी:

+0

विस्मयकारी, स्पष्टीकरण के लिए जयकार! – Patrick

+0

@ पैट्रिक आपका स्वागत है। – VisioN

1

आपका चरित्र वर्ग (वर्ग कोष्ठक में भाग) कह रहा है कि आप 0-9 के अलावा कुछ मिलान करना चाहते हैं और az और +। आप कितने एक-z या 0-9 आप मिलान कराना चाहते के बारे में स्पष्ट नहीं हैं, लेकिन मुझे लगता है + मतलब है कि आप कम से कम एक अक्षरांकीय चरित्र के तार बदलना चाहते हैं।यह बजाय पढ़ना चाहिए: इसके अलावा

str = str.replace(/[^-a-z0-9]+/g, ""); 

, अगर आप छोटे अक्षर के साथ-साथ बड़े अक्षर से मेल खानी चाहिए, आप का उपयोग करना चाहिए:

str = str.replace(/[^-a-zA-Z0-9]+/g, ""); 
संबंधित मुद्दे