नियमित अभिव्यक्ति: कोई भी वर्ण जो अक्षर या संख्या नहीं है


113

मैं नियमित अभिव्यक्ति का पता लगाने की कोशिश कर रहा हूं जो किसी भी वर्ण से मेल खाएगा जो कोई अक्षर या संख्या नहीं है। तो जैसे चरित्र (,, @, £, () आदि ...

एक बार मिल जाने के बाद मैं इसे एक खाली जगह से बदलना चाहता हूं।

कोई सलाह।

जवाबों:


165

पत्र या संख्या के अलावा किसी भी चीज़ से मेल खाने के लिए आप यह कोशिश कर सकते हैं:

[^a-zA-Z0-9]

और प्रतिस्थापित करने के लिए:

var str = 'dfj,dsf7lfsd .sdklfj';
str = str.replace(/[^A-Za-z0-9]/g, ' ');

17
\wशब्द वर्णों के लिए है और बिल्कुल वैसा ही है [a-zA-Z0-9_](ध्यान दें कि अंडरस्कोर शब्द वर्ण माना जाता है।) ... इसलिए शॉर्टहैंड होगाstr.replace(/[^\w]/g, ' ')
जोएल मेलन

लेकिन इसमें कई यूनिकोड अक्षर भी शामिल होंगे! क्या यूनिकोड अक्षरों को बाहर करने का कोई तरीका है?
क्लिट टेलर

1
यूनिकोड वर्णों को शामिल करने के लिए, आप [^ \ p {L} 0-9] का उपयोग कर सकते हैं
डेव

@ अवतल: २०१ of तक आप पॉलीफ़िल के बिना नहीं रह सकते, जाहिरा तौर पर ... stackoverflow.com/questions/280712/javascript-unicode-regexes
Nickolay

वहाँ एक रास्ता है, एक जगह के साथ पश्चाताप के बजाय ... "\" के साथ बदलें चरित्र की पहचान की गई है? इस तरह: इस dfj, dsf7lfsd .sdklfj को इस dfj \, dsf7lfsd \ .sdklfj में बनाएँ?
क्रेज़ीस्पाइ नोव

39

यह नियमित अभिव्यक्ति ऐसी किसी भी चीज़ से मेल खाती है जो अक्षर, अंक या अंडरस्कोर ( _) वर्ण नहीं है।

\W

उदाहरण के लिए जावास्क्रिप्ट में:

"(,,@,£,() asdf 345345".replace(/\W/g, ' '); // Output: "          asdf 345345"

मेरा मानना ​​है कि वह किसी भी अंक या अक्षर (अंग्रेजी भाषा) से मेल खाने के लिए / (_ | \ W) / g की तलाश कर रहा है
kennebec

@sbmaxx मैं इन पात्रों को छोड़कर सभी (और,) को बदलना चाहता हूं। मैं वर्तमान रेगेक्स में इस स्थिति को कैसे जोड़ सकता हूं।
के पाल

17

आप क्या देख रहे हैं:

var yourVar = '1324567890abc§$)%';
yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' ');

यह सभी गैर-अल्फ़ान्यूमेरिक वर्णों को एक स्थान से बदल देता है।

अंत में "जी" सभी घटनाओं को बदल देता है।

Az (लोअरकेस) और AZ (अपरकेस) निर्दिष्ट करने के बजाय आप इन-केस-संवेदी विकल्प का उपयोग कर सकते हैं /[^a-z0-9]/gi:।


क्या यह रिक्त स्थान से मेल खाएगा? मुझे रिक्त स्थान रखने की आवश्यकता है। धन्यवाद।
जेम्स जेफरी

अंतरिक्ष वर्णों का मिलान होगा, लेकिन फिर अंतरिक्ष पात्रों द्वारा प्रतिस्थापित किया जाएगा, इसलिए प्रभावी रूप से यह उन्हें अकेला छोड़ देगा (एक स्थान एक अंतरिक्ष रहेगा)।
जिम्बो

9

इस तरह से बहुत देर हो चुकी है, लेकिन चूंकि कोई स्वीकृत जवाब नहीं है इसलिए मैं यह प्रदान करना चाहूंगा कि मुझे क्या लगता है कि यह सबसे सरल है: \ D - सभी गैर अंक वर्णों से मेल खाता है।

var x = "123 235-25%";
x.replace(/\D/g, '');

एक्स में परिणाम: "12323525"

Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions देखें


5

str.replace (/ [^ \ w] /) करने का प्रयास करें; यह आपके स्ट्रिंग से सभी गैर-अक्षर और संख्याओं को बदल देगा!

1 संपादित करें: str.replace(/[^\w]/g, ' ')


2
एक काम का जवाब होगा str.replace(/[^\w]/g, ' ')। यदि आप /gध्वज शामिल नहीं करते हैं तो यह केवल पहली घटना को प्रतिस्थापित करेगा। और यदि आप एक प्रतिस्थापन स्ट्रिंग को परिभाषित नहीं करते हैं, तो यहां रिक्त स्थान है ' ', यह undefinedसभी जगह बदल देगा । अंत में, अंडरस्कोर बदले नहीं जाएंगे क्योंकि वे मेल खाते हैं \w। यह जवाब सही नहीं है।
जुलिएन लिरचोन

4
  • केवल पत्रों का मिलान करें /[A-Z]/ig
  • पत्र नहीं कुछ भी मैच /[^A-Z]/ig
  • मैच संख्या केवल /[0-9]/gया/\d+/g
  • मैच कुछ भी नंबर /[^0-9]/gया नहीं/\D+/g
  • नंबर या अक्षर से कुछ भी मिलान करें /[^A-Z0-9]/ig

अन्य संभावित पैटर्न हैं


3

बस दूसरों को देखने के लिए:

someString.replaceAll("([^\\p{L}\\p{N}])", " ");

किसी भी गैर-अक्षर और गैर-संख्या वाले यूनिकोड वर्णों को हटा देगा।

स्रोत


मुझे यकीन नहीं है कि दो upvotes कहां से आए हैं, लेकिन जावास्क्रिप्ट में (जो कि यह सवाल है) कोई नहीं है replaceAll, और \p{..}संपत्ति से बचने के लिए व्यापक रूप से लागू नहीं किया गया है।
निकोले

2

क्या आपने कोशिश की है str = str.replace(/\W|_/g,'');कि यह बिना किसी चरित्र के एक स्ट्रिंग लौटाएगा और आप निर्दिष्ट कर सकते हैं कि क्या पाइप के बाद कोई विशिष्ट चरित्र |उन्हें पकड़ने के लिए है।

var str = "1324567890abc§$)% John Doe #$@'.replace(/\W|_/g, ''); यह वापस आ जाएगा str = 1324567890abcJohnDoe

या अंकों और अक्षरों की तलाश करें और उन्हें रिक्त स्ट्रिंग ("") के लिए बदलें:

var str = "1324567890abc§$)% John Doe #$@".replace(/\w|_/g, ''); यह वापस आ जाएगा str = '§$)% #$@';


1

éआप की कोशिश कर सकते हैं जैसे कि विकृति विज्ञान के साथ पत्र या संख्या या पत्र के अलावा कुछ भी मिलान करने के लिए :

[^\wÀ-úÀ-ÿ]

और प्रतिस्थापित करने के लिए:

var str = 'dfj,dsf7é@lfsd .sdklfàj1';
str = str.replace(/[^\wÀ-úÀ-ÿ]/g, '_');

शीर्ष पद से प्रेरित होकर डायक्ट्रीक्स के लिए समर्थन

स्रोत

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.