2010-06-07 17 views
61

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

एक बार पाया मैं एक रिक्त स्थान के साथ बदलना चाहते हैं।

किसी भी सलाह।

उत्तर

102

पत्र के अलावा और कुछ मेल करने के लिए या नंबर आप इस कोशिश कर सकते:

[^a-zA-Z0-9] 

और बदलने के लिए:

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

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

+0

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

+0

यूनिकोड वर्णों को शामिल करने के लिए, आप [^ \ p {L} 0-9] – Dave

13

आप के लिए देख रहे हैं:

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

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

अंत में "जी" सभी घटनाओं को प्रतिस्थापित करता है।

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

+0

का उपयोग कर सकते हैं क्या यह रिक्त स्थान से भी मेल खाएगा? मुझे रखने के लिए रिक्त स्थान की जरूरत है। धन्यवाद। –

+0

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

21

यह नियमित अभिव्यक्ति अक्षर, अंक, और अंडरस्कोर वर्णों से मेल नहीं खाती है।

 

\W 
 
जावास्क्रिप्ट में

उदाहरण के लिए:

 

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

मेरा मानना ​​है कि वह किसी भी अंक या पत्र (अंग्रेजी भाषा) – kennebec

+5

... या/[\ W _]/शायद – Pointy

7

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

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

एक्स में परिणाम: "12,323,525"

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

1

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

var str = "1324567890abc§$)% John Doe #[email protected]'.replace(/\W|_/g, ''); यह str = 1324567890abcJohnDoe

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

var str = "1324567890abc§$)% John Doe #[email protected]".replace(/\w|_/g, ''); यह str = '§$)% #[email protected]';

2

वापस आ जाएगी दूसरों को देखने के लिए बस के लिए:

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

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

Source

0

str करने का प्रयास करें।(/ [^ \ W] /) की जगह; यह आपकी स्ट्रिंग से सभी गैर-अक्षर और संख्याओं को प्रतिस्थापित करेगा!

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

+1

से मेल खाने के लिए/(_ | \ W)/g की तलाश में है, एक कामकाजी उत्तर 'str। प्रतिस्थापित करें (/ [^ \ w]/g, '') '। यदि आप '/ g' ध्वज शामिल नहीं करते हैं तो यह केवल पहले अवसर को प्रतिस्थापित करेगा। और यदि आप एक प्रतिस्थापन स्ट्रिंग को परिभाषित नहीं करते हैं, तो यहां एक रिक्त स्थान ''' 'है, यह जगह पर' अपरिभाषित 'द्वारा प्रतिस्थापित होगा। अंत में, अंडरस्कोर को प्रतिस्थापित नहीं किया जाएगा क्योंकि वे '\ w' से मेल खाते हैं। यह जवाब एकदम सही फिट नहीं है। –

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