文字列に空白だけでなく文字と空白が含まれているかどうかを確認するにはどうすればよいですか?


134

文字列に空白のみが含まれているかどうかを確認する最良の方法は何ですか?

文字列には、空白だけでなく、空白と組み合わせた文字を含めることができます。

回答:


293

文字列全体をチェックして空白のみがあるかどうかを確認する代わりに、空白以外の文字が少なくとも1つあるかどうかを確認するだけです。

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

7
myStringがnull値になるように注意してください。それはtrueを返します:/\S/.test(null)== true
Dilshod Tadjibaev 14

6
これらの回答の多くには正規表現が含まれています!これは、jsで物事を検出するネイティブな方法がないことを意味しますか?文字列はありませんか?ネイティブトリムもありませんか?
JonnyRaa 14

4
@JonnyLeeds正規表現はjsでも構文をサポートしているので、出荷されているユーティリティメソッドよりも実際にはネイティブであると言えます;)
Ricardo van den Broek

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である今日、これはネイティブ実装に依存するパフォーマンス的に最もクリーンで最も効率的なソリューションです。そして、タブと改行で正しく動作します。
Alexander Abakumov

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

これは、1つ以上の空白文字をチェック+*ます。空の文字列にも一致する場合は、で置き換えます。


18

まあ、jQueryを使用している場合は、もっと簡単です。

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

1
改行とタブでも機能しますが、上記の正規表現の例は空白以外の何もないことを探しているだけなので機能しません。ただし、正規表現の知識を持つ誰かが、検索にタブ/改行も含む正規表現を作成できると確信しています。
ケイト

valにスペースが割り当てられている場合は機能しません。私の場合は4つのスペースです。
user1451111 2017

7

この正規表現に対して文字列を確認してください:

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

1
私が質問を読む方法は、文字列が/ only /ホワイトスペースでない限り/ any /ホワイトスペースが許可されるということです。文字列が空の場合の対処方法については何も書かれていないため、nickfの回答の方が優れている可能性があります。
Ian Clelland、2010年

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
}

0

次の方法を使用して、文字列に空白のみが含まれているかどうかを検出しました。空の文字列にも一致します。

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

0

これは高速な解決策になる可能性があります

return input < "\u0020" + 1;

それreturn input < " 1"; はただやっているどちらがアルファベット順の比較をしているだけなのか。入力が「1」より下にソートされている限り、trueを返します。例: return " asdfv34562345" < "\u0020" + 1;trueと評価されます。
デレクジエンバ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.