tl; डॉ
बस अपने चरित्र वर्ग में एक स्थान जोड़ें ।
^[a-zA-Z0-9_ ]*$
अब, यदि आप सख्त होना चाहते हैं ...
ऊपर बिल्कुल सही नहीं है। इस तथ्य के कारण कि *
इसका अर्थ शून्य या अधिक है , यह निम्नलिखित सभी मामलों से मेल खाता है जो आमतौर पर मिलान करने के लिए नहीं होगा:
- एक खाली स्ट्रिंग, ""।
- एक स्ट्रिंग में पूरी तरह से रिक्त स्थान शामिल थे, ""।
- एक स्ट्रिंग जो स्पेस के साथ और / या ट्रेल्स करता है, "हैलो वर्ल्ड"।
- एक स्ट्रिंग जिसमें शब्दों के बीच में कई स्थान होते हैं, "हैलो वर्ल्ड"।
मूल रूप से मुझे नहीं लगता था कि इस तरह के विवरण में जाने के लायक थे, क्योंकि ओपी ऐसा बुनियादी सवाल पूछ रहा था कि ऐसा लगता था कि सख्ती चिंता का विषय नहीं है। अब जबकि प्रश्न ने कुछ लोकप्रियता हासिल की है, लेकिन मैं कहना चाहता हूं ...
जो, मेरे स्वाद में (उपयोग किए बिना \w
) अनुवाद करता है:
^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$
(कृपया @stema पर ध्यान न दें।)
इस पर ध्यान देने योग्य कुछ बातें (और @ स्टैमा का) उत्तर दें:
यदि आप शब्दों के बीच कई रिक्त स्थान की अनुमति देना चाहते हैं (कहते हैं, यदि आप आकस्मिक डबल-स्पेस की अनुमति देना चाहते हैं, या यदि आप एक पीडीएफ से कॉपी-पेस्ट किए गए पाठ के साथ काम कर रहे हैं), तो +
अंतरिक्ष के बाद जोड़ें :
^\w+( +\w+)*$
यदि आप टैब और न्यूलाइन (व्हाट्सएप वर्ण) की अनुमति देना चाहते हैं, तो स्थान को \s+
निम्न से बदलें :
^\w+(\s+\w+)*$
यहां मैं +
डिफ़ॉल्ट रूप से सुझाव देता हूं , उदाहरण के लिए, विंडोज लाइनब्रेक में अनुक्रम में दो व्हाट्सएप वर्ण शामिल हैं \r\n
, इसलिए आपको +
दोनों को पकड़ने की आवश्यकता होगी ।
अभी भी काम नहीं कर रहा है?
जाँचें कि आपके द्वारा उपयोग किए जा रहे नियमित अभिव्यक्तियों की कौन सी बोली है। * जावा जैसी भाषाओं में आप अपने बैकस्लैश, से बचने के लिए होगा यानी \\w
और \\s
। पुरानी या अधिक मूल भाषाओं और उपयोगिताओं में, जैसे sed
, \w
और \s
परिभाषित नहीं हैं, इसलिए उन्हें क्रमशः वर्ण वर्गों, जैसे [a-zA-Z0-9_]
और [\f\n\p\r\t]
, के साथ लिखें ।
* मुझे पता है कि यह सवाल टैग हैvb.net, लेकिन 25,000+ विचारों के आधार पर, मैं अनुमान लगा रहा हूं कि यह केवल उन लोगों को नहीं है जो इस सवाल पर आ रहे हैं। वर्तमान में यह Google पर खोज वाक्यांश, नियमित अभिव्यक्ति स्थान शब्द के लिए पहला हिट है ।