2010-01-08 14 views
96

यह जांचने का सबसे अच्छा तरीका क्या है कि स्ट्रिंग में केवल व्हाइटस्पेस है या नहीं?मैं कैसे जांच सकता हूं कि स्ट्रिंग में वर्ण और सफेद जगह नहीं है, न केवल सफेद जगह?

स्ट्रिंग सफेद स्थान के साथ संयुक्त शामिल करने के लिए अनुमति दी है, लेकिन नहीं सिर्फ खाली स्थान के। , 1 या अधिक खाली स्थान के पात्रों के लिए

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

उत्तर

225

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

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

+1 यह मेरा से बेहतर जवाब है, हालांकि शायद एक महीने बाद वापस आने पर स्पष्ट नहीं है! –

+8

यही टिप्पणियां हैं :) – AntonioCS

+2

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

6

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

+0

यह केवल की जाँच करेगा स्ट्रिंग है कि क्या * केवल * खाली स्थान के पात्रों, लेकिन नहीं यह शामिल है * किसी * व्हाइटस्पेस, के रूप में कहा गया था। – stakx

+1

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

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

इस जांच करता है कि आप यह भी एक खाली स्ट्रिंग मिलान करने के लिए तो * साथ + बदल देते हैं:

+0

मेरा जवाब चुरा लिया। +1 – Triptych

+0

मुझे यह जवाब पसंद है क्योंकि यह परीक्षण के लिए हम परीक्षण करते हैं, और बाकी सब कुछ नहीं। ऐसी स्थितियां अंदर फिट होंगी यदि आपके पास पहले से ही है - अगर स्विच-केस या जगह में। –

1
if (!myString.replace(/^\s+|\s+$/g,"")) 
    alert('string is only whitespace'); 
0

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

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

या

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

तो, मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन आप की तरह कुछ कर सकता है:

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

या आप क्या कर सकते nickf कहा और उपयोग:

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

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

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

तेज़, या बस इतना आसान? – 2rs2ts

+1

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

+0

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

8

सरल जवाब आपके ब्राउज़र का समर्थन करता है, तो trim() समारोह

if (myString && !myString.trim()) { 
    //First condition to check if string is not empty 
    //Second condition checks if string contains just whitespace 
} 
संबंधित मुद्दे