2012-11-03 17 views
6

मुझे स्ट्रिंग में सभी गैर-शब्द वर्णों को प्रतिस्थापित करने के लिए कुछ मदद चाहिए।सभी गैर-शब्द वर्णों को बदलें? * + #

उदाहरण के रूप में (stadtbezirkspräsident'stadtbezirkspräsident बनना चाहिए।

यह रेगेक्स सभी भाषाओं के लिए काम करना चाहिए, इसलिए यह बहुत मुश्किल है क्योंकि मुझे नहीं पता कि ñ या œ जैसे अक्षरों से मिलान कैसे करें। मैं

string.replace(/[&\/\\#,+()$~%.'":*?<>-_{}]/g,' '); 

के साथ इस को हल करने की कोशिश की लेकिन वहाँ Ø बाईं जैसे कई विशेष वर्ण के लिए अभी भी कर रहे हैं।

शायद इसके लिए एक सामान्य चयनकर्ता है, या किसी ने इस समस्या को हल कर लिया है?

+0

Ø विभिन्न भाषाओं में एक पत्र है (उदाहरण के लिए डेनिश) :) –

+0

समान: [यह] (http://stackoverflow.com/questions/2392194/how-to-match-the-international-alphabet-english -az-non-english-with-a-regu) प्रश्न। जावास्क्रिप्ट रेगेक्स में कोई देशी यूनिकोड-जागरूक मैचर्स नहीं हैं –

उत्तर

6

उपयोग करने के लिए आपके द्वारा निर्धारित सभी यूनिकोड खुद पर्वतमाला, यह बहुत काम हो रहा है है, तो कोशिश करें।

यह स्टीवन Levithan के XRexExp package with Unicode add-ons का उपयोग करें और अपने यूनिकोड संपत्ति शॉर्टकट का उपयोग करने के लिए और अधिक समझ बनाने सकता है:

var regex = new XRegExp("\\P{L}+", "g") 
string = XRegExp.replace(string, regex, "") 
+1

@ Ωmega: संपादन के लिए धन्यवाद! –

+1

thx !!!! : डी XRegExp वास्तव में अद्भुत है! –

6

चाल

str.replace(/(?!\w)[\x00-\xC0]/g, '') 
+1

'\ w' लोकेल-जागरूक या यूनिकोड-जागरूक नहीं है। –

+0

@TimPietzcker - मुझे पता है, लेकिन मेरा समाधान कम हेक्स रेंज में विशेष गुणकों को हटा देता है केवल –

+1

(हाँ, क्या आपने इसे संपादित नहीं किया था जैसा कि मैं अपनी टिप्पणी लिख रहा था?) - ठीक है, लेकिन अभी भी पर्याप्त पात्र हैं जो नहीं होंगे इस द्वारा पकड़ा जा सकता है (यहां तक ​​कि 8-बिट एएनएसआई सेट के भीतर: '×' और '÷ 'दिमाग में आना)। –

1

यह टिम Pietzcker के जवाब के लिए एक टिप्पणी के और अधिक है, लेकिन टिप्पणी में कोड पेश अजीब है ... यहाँ XRexExp पैकेज का उपयोग का एक सरल उदाहरण:

<p id=orig>Bundespräsident/ß+ð/ə¿α!</p> 
<p id=new></p> 
<script src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-min.js"> 
</script> 
<script src="http://xregexp.com/addons/unicode/unicode-base.js"> 
</script> 
<script> 
var regex = new XRegExp("\\P{L}+", "g"); 
var string = document.getElementById('orig').innerHTML; 
string = XRegExp.replace(string, regex, ""); 
document.getElementById('new').innerHTML = string; 
</script> 

उत्पादन उपयोग के लिए, आप शायद आधार पैकेज और यूनिकोड प्लग-इन के कुछ संस्करणों डाउनलोड करने और अपने सर्वर पर उन्हें का उपयोग करना चाहते हैं।

नोट: कोड उन अक्षरों की जांच करता है जिन्हें यूनिकोड में अक्षरों (वर्णमाला) के रूप में वर्गीकृत नहीं किया जाता है। मुझे लगता है कि यह "शब्द चरित्र" से आपका क्या मतलब है, हालांकि प्राकृतिक भाषा में शब्दों में हाइफ़न, एस्ट्रोफ़ेस और अन्य गैर-पत्र हो सकते हैं।

सावधान रहें कि वर्ण यूनिकोड में जोड़े गए हैं, और किसी चरित्र की श्रेणी (शायद ही कभी) बदल सकती है। पैकेज को अच्छी तरह से बनाए रखा गया है, यद्यपि; यह यूनिकोड 6.1 के अनुरूप है (संस्करण 6.2 बाहर है, लेकिन इसमें कोई नया अक्षर नहीं है)।

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