2012-01-23 22 views
42

मैं इस तरह एक स्ट्रिंग है:jQuery स्ट्रिंग से विशेष वर्ण को हटाने और अधिक

var str = "I'm a very^ we!rd* Str!ng."; 

मुझे क्या करना ऊपर स्ट्रिंग से सभी विशेष वर्ण को हटा रहा है और रिक्त स्थान की जगह और मामले में वे टाइप किया जा रहा है चाहते हैं क्या , अंडरस्कोर, एक चरित्र के साथ।

ऊपर स्ट्रिंग "परिवर्तन" के बाद इस प्रकार दिखाई देगा:

var str = 'im-a-very-werd-strng'; 
+0

सबसे पहले, आप शायद दोहरे उद्धरण चिह्नों स्ट्रिंग के लिए, का उपयोग एक एकल उद्धरण के अंदर न होने के कारण होता है। –

+0

आप सही हैं, लेकिन यह सिर्फ एक उदाहरण था। उसके लिए खेद है। – Roel

+1

इसे jQuery के रूप में क्यों टैग किया गया है? पाठ प्रसंस्करण के पास jQuery के साथ कुछ लेना देना नहीं है। – gonchuki

उत्तर

97

replace(/[^a-z0-9\s]/gi, '') सिर्फ अल्फान्यूमेरिक मूल्यों के लिए नीचे स्ट्रिंग फिल्टर करेगा और replace(/[_\s]/g, '-') हाइफ़न के साथ अंडरस्कोर और रिक्त स्थान की जगह लेगा:

str.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '-') 

Regex के लिए स्रोत: RegEx for Javascript to allow only alphanumeric

यहाँ है एक डेमो: http://jsfiddle.net/vNfrk/

+2

* [डैनियल Przybylowski] से टिप्पणी (http://stackoverflow.com/users/3941987/daniel-przybylowski): * ऐसा लगता है कि अंडरस्कोर को पहले रेगेक्स द्वारा हटा दिया गया है। तो दूसरा ऐसा हो सकता है: प्रतिस्थापित करें (/ \ s {1,}/g, '-') क्वांटिफायर का कारण 'या' के साथ एक या अधिक रिक्त स्थान को प्रतिस्थापित करना है। क्यूं कर ? "कुछ और कुछ" जैसी स्ट्रिंग की कल्पना करें। –

+0

धन्यवाद इसके लिए एक गुच्छा! – Yass

+0

क्या करता है? –

21

द्वारा मान लिया जाये कि "विशेष" आप गैर शब्द अक्षर में मतलब है, तो यह बहुत आसान है।

str = str.replace(/[_\W]+/g, "-") 
+0

मैं गैर-शब्द वर्णों को हटाना चाहता हूं (या उन्हें 'कुछ नहीं' के साथ प्रतिस्थापित करें)। मैं संख्याओं और सामान्य अक्षरों को रखना चाहता हूं और क्षैतिज पट्टी के साथ रिक्त स्थान और अंडरस्कोर को प्रतिस्थापित करना चाहता हूं। – Roel

+0

यह सबसे शक्तिशाली जवाब है। सरल अभी तक शक्तिशाली ..! – KeepMove

+1

वर्थ इंगित करता है कि उपरोक्त सभी उत्तरों के विपरीत यह वास्तव में "foo-bar" जैसा "foo-bar" से संबंधित है और इस "foo-bar" की तरह नहीं है। छोटा, सरल और नौकरी सही है! –

13
str.toLowerCase().replace(/[\*\^\'\!]/g, '').split(' ').join('-') 
1

जब से मैं जैस्पर का जवाब पर टिप्पणी नहीं कर सकता, मैं उसके समाधान में एक छोटे से बग का कहना चाहते हैं:

str.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '-'); 

समस्या यह है कि पहली बार कोड सभी हाइफ़न को दूर करता है और फिर उन्हें बदलने के लिए कोशिश करता है :) आपको प्रतिस्थापन कॉल को उलट करना चाहिए और दूसरे प्रतिस्थापन regex में हाइफ़न भी जोड़ना चाहिए। इस तरह:

str.replace(/[_\s]/g, '-').replace(/[^a-z0-9-\s]/gi, ''); 
1

स्ट्रिंग वाक्य से संख्याओं, अंडरस्कोर, सफेद-रिक्त स्थान और विशेष वर्ण हटाएं।

str.replace(/[0-9`[email protected]#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi,''); 

Demo

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