मैं कैसे जांच सकता हूं कि क्या स्ट्रिंग में वर्ण और व्हाट्सएप हैं, न कि सिर्फ व्हाट्सएप?


134

यह जांचने का सबसे अच्छा तरीका है कि क्या किसी स्ट्रिंग में केवल व्हाट्सएप है?

स्ट्रिंग को व्हाट्सएप के साथ संयुक्त वर्ण रखने की अनुमति है , लेकिन न केवल व्हाट्सएप।

जवाबों:


294

पूरे स्ट्रिंग की जांच करने के बजाय यह देखने के लिए कि क्या केवल व्हाट्सएप है, बस यह देखने के लिए जांचें कि क्या गैर व्हाट्सएप का कम से कम एक वर्ण है :

if (/\S/.test(myString)) {
    // string is not empty and not just whitespace
}

7
बस मेरे मूल्य के साथ सावधान रहना शून्य मान हो। यह सच लौटेगा: /\S/.test(null) == सच
दिलशाद तडजीबाएव

6
इन जवाबों में से कई में regex है! इसका मतलब यह है कि js में बात का पता लगाने का कोई मूल तरीका नहीं है? कोई स्ट्रिंग नहीं है। व्हाईटस्पेस या कुछ और? क्या कोई देशी ट्रिम भी नहीं है?
जोनिरा

4
@JonnyLeeds चूंकि regex को js में सिंटैक्स समर्थन भी है, इसलिए कह सकते हैं कि यह वास्तव में शिप किए गए उपयोगिता विधियों की तुलना में अधिक मूल है;)
रिकार्डो वैन डेन ब्रोक

38

यदि आपका ब्राउज़र trim()फ़ंक्शन का समर्थन करता है तो सबसे सरल उत्तर

if (myString && !myString.trim()) {
    //First condition to check if string is not empty
    //Second condition checks if string contains just whitespace
}

आजकल जब IE 8 RIP है, तो यह मूल कार्यान्वयन पर निर्भर सबसे साफ और सबसे कुशल समाधान प्रदर्शन-वार है। और यह टैब और नई लाइनों के साथ सही ढंग से काम करता है।
अलेक्जेंडर अबाकुमोव

35
if (/^\s+$/.test(myString))
{
      //string contains only whitespace
}

यह 1 या अधिक व्हाट्सएप पात्रों के लिए जाँच करता है, यदि आप इसे एक खाली स्ट्रिंग से मेल खाते हैं तो इसके +साथ बदलें *


18

ठीक है, अगर आप jQuery का उपयोग कर रहे हैं, तो यह सरल है।

if ($.trim(val).length === 0){
   // string is invalid
} 

1
न्यूलाइन और टैब के लिए भी काम करता है, जबकि ऊपर रेगेक्स उदाहरण नहीं हैं क्योंकि वे केवल कुछ और नहीं बल्कि सफेद स्थान की अनुपस्थिति की तलाश कर रहे हैं। हालाँकि, मुझे यकीन है कि कुछ रेगेक्स ज्ञान वाला कोई रेगेक्स बना सकता है जिसमें खोज में टैब / न्यूलाइन भी शामिल होगा।
केट

जब वेल को रिक्त स्थान दिया जाता है, तो मेरे मामले में चार स्थान काम नहीं करते हैं।
user1451111

7

बस इस regex के खिलाफ स्ट्रिंग की जाँच करें:

if(mystring.match(/^\s+$/) === null) {
    alert("String is good");
} else {
    alert("String contains only whitespace");
}

1
जिस तरह से मैं प्रश्न पढ़ता हूं, वह कहता है कि / किसी भी / व्हाट्सएप को अनुमति दी जाती है, जब तक कि स्ट्रिंग / केवल / व्हाट्सएप नहीं है। यदि स्ट्रिंग खाली है तो क्या करना है, इस पर चुप है, इसलिए यह हो सकता है कि नीक का जवाब अभी भी बेहतर है।
इयान क्लेलैंड


0

जब मैं अपनी स्ट्रिंग के बीच में रिक्त स्थान की अनुमति देना चाहता हूं, तो नियमित अभिव्यक्ति का उपयोग मैंने किया, लेकिन शुरुआत या अंत में यह नहीं था:

[\S]+(\s[\S]+)*

या

^[\S]+(\s[\S]+)*$

तो, मुझे पता है कि यह एक पुराना सवाल है, लेकिन आप कुछ ऐसा कर सकते हैं:

if (/^\s+$/.test(myString)) {
    //string contains characters and white spaces
}

या आप क्या कर सकते हैं निक ने कहा और उपयोग:

if (/\S/.test(myString)) {
    // string is not empty and not just whitespace
}

0

मैंने यह पता लगाने के लिए निम्नलिखित विधि का उपयोग किया है कि क्या एक स्ट्रिंग में केवल व्हाट्सएप है। यह खाली तारों से भी मेल खाता है।

if (/^\s*$/.test(myStr)) {
  // the string contains only whitespace
}

0

यह तेजी से समाधान हो सकता है

return input < "\u0020" + 1;

वह बस कर रहा है return input < " 1"; जो सिर्फ वर्णमाला तुलना कर रहा है। जब तक इनपुट "1" की तुलना में कम क्रमबद्ध होता है, तब तक यह सच हो जाएगा। उदाहरण: return " asdfv34562345" < "\u0020" + 1;सत्य का मूल्यांकन करता है।
डेरेक ज़िम्बा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.