रेगेक्स, सफेद स्थान या बृहदान्त्र को छोड़कर हर गैर-अल्फ़ान्यूमेरिक चरित्र


131

मैं इसे कहीं भी कैसे कर सकता हूं?

मूल रूप से, मैं सभी प्रकार के विविध वर्णों जैसे कि एम्परसेंड, अर्धविराम, डॉलर के संकेत, आदि का मिलान करने का प्रयास कर रहा हूं।


13
/[^a-zA-Z0-9\s\:]*/
केली

जवाबों:


246
[^a-zA-Z\d\s:]
  • \ d - संख्यात्मक वर्ग
  • \ _- व्हाट्सएप
  • a-zA-Z - सभी अक्षरों से मेल खाता है
  • ^ - उन सभी को नकारता है - इसलिए आपको मिलता है - गैर-संख्यात्मक चार्ट, गैर रिक्त स्थान और गैर-कॉलोन

यही मैं भी देख रहा था :)) - मुझे आपके सही उत्तर का प्रचार करना है
ट्यूडर कॉन्स्टेंटिन

7
केवल एक चीज जो मैंने पाया है कि यह é या ã जैसे विशेष वर्णों को हटाती है। मैं पसंद करूंगा [^ \ w \ d \ s:]।
एरिक बेलैर

5
डाउनवोटेड क्योंकि यह गैर-लैटिन वर्णों को नहीं पकड़ेगा, और न ही "विशेष" लैटिन वर्णों को।
डेमियन

\dऔर \sपर्ल एक्सटेंशन जो आम तौर पर बड़े उपकरण द्वारा समर्थित नहीं हैं चाहते हैं grep, sed, tr, lexआदि,
tripleee

38

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

[^a-zA-Z\d\s:]

1
बाकी या तो अंतरिक्ष के लिए जांच करते हैं लेकिन व्हाट्सएप नहीं करते हैं या गलत स्थान पर वास्तव में नकारात्मक करने के लिए उपेक्षा है।
ज़ाचरी स्कॉट

\ w ने अंडरस्कोर भी पकड़ा - जो एक गैर-अल्फ़ान्यूमेरिक वर्ण है
ट्यूडर कॉन्स्टैंटिन

अहा! मैं संशोधित करूंगा - मुझे नहीं पता था। मुझे उम्मीद है कि यह अलग-अलग इंजनों के लिए अलग तरह से काम करता है, लेकिन ओपी को सुरक्षित उत्तर दे सकता है।
ल्यूक स्नेिंगर ने

2
डाउनवोटेड क्योंकि यह गैर-लैटिन वर्णों को नहीं पकड़ेगा, और न ही "विशेष" लैटिन वर्णों को।
डेमियन

16

यदि आप उच्चारण किए गए लैटिन वर्णों (उदाहरण के लिए। As) को सामान्य अक्षरों के रूप में व्यवहार करना चाहते हैं (जैसे कि उन्हें भी मिलान करने से बचें), तो आपको अपने regex में उपयुक्त यूनिकोड श्रेणी ( \ u00C0- \ u00FF ) को भी शामिल करना होगा, इसलिए यह इस तरह दिखेगा:

/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
  • ^ निम्नानुसार है
  • a-zA-Z ऊपरी और निचले मामले के पत्रों से मेल खाता है
  • \d अंकों से मेल खाता है
  • \s सफेद स्थान से मेल खाता है (यदि आप केवल रिक्त स्थान से मेल खाना चाहते हैं, तो इसे एक स्थान से बदलें)
  • : एक बृहदान्त्र से मेल खाता है
  • \u00C0-\u00FF उच्चारण लैटिन वर्णों के लिए यूनिकोड श्रेणी से मेल खाता है।

nb। यूनिकोड श्रेणी का मिलान सभी रेगेक्स इंजन के लिए काम नहीं कर सकता है, लेकिन उपरोक्त निश्चित रूप से जावास्क्रिप्ट में काम करता है (जैसा कि कोडपेन पर इस पेन में देखा गया है )।

NB2। आप मिलान अंडरस्कोर की परवाह नहीं कर रहे हैं, आप बदल सकते a-zA-Z\dसाथ \wजो अक्षर, अंक, और अंडरस्कोर से मेल खाता है,।


इस श्रेणी में कुछ वर्ण हैं जो अल्फ़ान्यूमेरिक (U + 00D7 और U + 00F7) नहीं हैं, और गैर-पश्चिमी भाषाओं जैसे पोलिश, चेक, वियतनामी आदि से बहुत सारे मान्य उच्चारण वर्णों को शामिल करता है
ट्रिपल

1
RegEx के प्रत्येक भाग के विवरण के लिए बनाया गया।
मोरजाबी

14

इसे इस्तेमाल करे:

[^a-zA-Z0-9 :]

जावास्क्रिप्ट उदाहरण:

"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")

एक ऑनलाइन उदाहरण देखें:

http://jsfiddle.net/vhMy8/


3
डाउनवोटेड क्योंकि यह गैर-लैटिन वर्णों को नहीं पकड़ेगा, और न ही "विशेष" लैटिन वर्णों को।
डेमियन

14
एक उत्तर को वोट देना आसान है, और फिर भी बोर्ड को रचनात्मक जानकारी प्रदान करना अधिक कठिन है, जैसे कि कोई तब गैर-लैटिन वर्णों को कैसे पकड़ता है, न ही "विशेष" लैटिन वर्ण? यहाँ तक मेरी गिनती के अनुसार आपने एक ही कारण के लिए 3 उत्तर नीचे दिए हैं, और एक मामूली मामूली बदलाव के लिए मेरी राय में। उदाहरण के लिए, मैं इन उत्तरों में चर्चा की गई है कि वास्तव में क्या है के लिए एक regex खोजने के लिए यहाँ हूँ। मैं उन चरित्र सेटों की परवाह नहीं करता, जो मेरे एप्लिकेशन में उपयोग नहीं किए जाएंगे। घटते रिटर्न का कानून।

हारून एक अमेरिकी नागरिक के लिए "मामूली रूप से छोटा" हो सकता है, लेकिन इस ग्रह के बाकी हिस्सों के लिए अत्यधिक प्रासंगिक है।
माइकल के बोरेगार्ड


4

यदि आपका अर्थ "गैर-अल्फ़ान्यूमेरिक वर्ण" है, तो इसका उपयोग करने का प्रयास करें:

var reg =/[^a-zA-Z0-9]/g      //[^abc]

1

यह regex C # , PCRE और Go के लिए काम करता है ।

यह RegexBuddy जो कहता है उससे क्रोम पर जावास्क्रिप्ट के लिए काम नहीं करता है । लेकिन यहाँ पहले से ही एक उदाहरण है।

इसका मुख्य भाग यह है:

\p{L}

का प्रतिनिधित्व करता है जो \p{L}या \p{Letter}किसी भी language.` से पत्र के किसी भी प्रकार


पूर्ण रेगेक्स ही: [^\w\d\s:\p{L}]

उदाहरण: https://regex101.com/r/K59PrA/2


यह यहां एकमात्र उत्तर है जो यूनिकोड उच्चारण वर्णमाला के साथ सही तरीके से व्यवहार करता है। अफसोस की बात है, सभी रेगेक्स इंजन इस सुविधा का समर्थन नहीं करते हैं (यहां तक ​​कि पायथन में इसकी कमी है, 3.8 के रूप में, भले ही इसका रेक्सक्स इंजन ओस्टेंसिक रूप से पीसीआर-आधारित हो)।
8

1
मैं पायथन को उत्तर से हटा दूंगा, मैंने सोचा कि मैंने परीक्षण किया है लेकिन स्पष्ट रूप से नहीं। यह बात बताने के लिए धन्यवाद।
Ste

0

इसे जोड़ने का प्रयास करें:

^[^a-zA-Z\d\s:]*$

यह मेरे लिए काम किया है ... :)


यह 2011 से स्वीकृत उत्तर को दोहराता प्रतीत होता है। ^और $एंकर इसे पूरी लाइनों से मेल खाने के लिए कहते हैं और *क्वांटिफायर का अर्थ है कि यह खाली लाइनों से भी मेल खाता है।
ट्रिपलए

0

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

/[^\w_]/g

^निषेध, अर्थात निम्नलिखित सेट में कुछ भी चुनें

\w कोई भी शब्द चरित्र (अर्थात कोई भी अल्फ़ान्यूमेरिक वर्ण, प्लस अंडरस्कोर)

_ अंडरस्कोर को नकारें, क्योंकि यह एक 'शब्द' अक्षर माना जाता है

उपयोग का उदाहरण - const nonAlphaNumericChars = /[^\w_]/g;

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