JavaScriptで変数がnullまたは空の文字列またはすべての空白であるかどうかを確認するにはどうすればよいですか?


95

変数がnullであるか、すべて空白であるか、または単に空白( "")であるかを確認する必要があります。

次のものがありますが、機能しません。

var addr;
addr = "  ";

if (!addr) {
    // pull error 
}

私が以下を実行すると、それは機能します:

if (addr) {

}​

必要なのは、C#メソッドのようなものString.IsNullOrWhiteSpace(value)です。


3
本当has *any* empty spacesですか?それともどういう意味is all empty spacesですか?
Madbreaks 2012

1
未定義はどうですか?
CodeToad 2015年

回答:


135

より厳密に模倣しているがIsNullOrWhiteSpace、null、空、または全スペースのみを検出する非jQueryソリューション:

function isEmptyOrSpaces(str){
    return str === null || str.match(/^ *$/) !== null;
}

...その後:

var addr = '  ';

if(isEmptyOrSpaces(addr)){
    // error 
}

*編集* opは特に次のように述べていることに注意してください:

var がnullであるか、空のスペースがあるか、それとも単に空白であるかを確認する必要があります

つまり、「ホワイトスペース」には、null、スペース、空白以外のものが含まれますが、私の答えは、オペレーションの特定の質問に答えることを目的としています。opは、たとえばタブのようなものをキャッチしたくない場合があるため、これは重要です。


62
空白には、タブやその他の種類のスペースなどを含めることもできます/^\s*$/。これらをキャッチするためにも使用します。
2013

2
@Grant私は意図的にそれをしませんでした。なぜなら、opは「varがnullであるか、または空のスペースがあるか、またはそれについては空白であるかどうかを確認する必要がある」と言ったためです。
Madbreaks 2013

4
match()の代わりにtest()を使用するのはどうですか?str === nullを返す|| (/ ^ * $ /)。test(str);
マリオ・レブレロ2014

1
@MarioLevrero好きです!test私が思い出すようにまたより速いです。
Madbreaks 2014

9
@Madbreaks opは、「必要なものはこのC#メソッドのようなものです:String.IsNullOrWhiteSpace」と述べました。このメソッドはタブを空白として扱います。
subsci 2014

24
if (addr == null || addr.trim() === ''){
  //...
}

null比較もキャッチしますundefinedfalse合格したい場合は、を使用してください!addr。の下位互換性のaddr.trim()ために、とスワップし$.trim(addr)ます。


1
「falseも渡したい場合は、!addrを使用してください」 - addrがゼロの場合にブレークダウン
Madbreaks 2017

19

使用できます if(addr && (addr = $.trim(addr)))

これには、addrチェックを実行するときに単に無視するのではなく、実際に外側の空白を削除するという利点があります。

リファレンス:http : //api.jquery.com/jQuery.trim/


2
もちろん、op は空白を削除したいとします。:)
Madbreaks

1
addr整数などで初期化されている場合、回答は誤検知を返します。
Madbreaks 2012

詳細情報がない場合、varがnull /未定義でない場合、varは常に文字列であると想定します。
ThiefMaster 2012

1
Opは「変数かどうかを確認...」と言っており、彼の例ではその変数が文字列であることを示していましたが、それはアイデアを実証するための例にすぎないと思います。
Madbreaks、

5
isEmptyOrSpaces(str){
    return !str || str.trim() === '';
}

既存の回答を複製する必要はありますか?または、関連する違いをもたらす以前の回答に何か変更を加えましたか?
Nico Haase

4

独自のメソッドを作成できます

String.IsNullOrWhiteSpace(value)

function IsNullOrWhiteSpace( value) {

    if (value== null) return true;

    return value.replace(/\s/g, '').length == 0;
}

1
\sただ、スペースよりも多くの一致する
Madbreaks

4

古い質問ですが、もっと簡単な答えに値すると思います。

あなたは単に行うことができます:

var addr = "  ";

if (addr && addr.trim()) {

    console.log("I'm not null, nor undefined, nor empty string, nor string composed of whitespace only.");

}

1
そうじゃないのaddr && addr.trim()?シングル&ではうまくいきませんでした&&
markv12

@ markv12修正、ありがとう
sandre89

3

空白をチェックするとき、c#メソッドはUnicode標準を使用します。空白には、スペース、タブ、キャリッジリターン、およびその他の多くの非印刷文字コードが含まれます。だからあなたは使う方が良いです:

function isNullOrWhiteSpace(str){
    return str == null || str.replace(/\s/g, '').length < 1;
}

Opは、目標が空白ではなく空白をチェックすることであることを明示的に述べています。
Madbreaks 2013

5
Opは、「必要なのは、このC#メソッドのようなものです:String.IsNullOrWhiteSpace(value)」。スペースを確認するだけの場合は、関数にisNullOrWhiteSpaceという名前を付けずに、IsNullOrEmtpyという名前を付けます。
Joao Leme 2013

C#メソッド、文字列がnullまたは一連のスペースであるかどうかを確認するために機能します。Opはそのような「何か」が欲しかったが、特にスペースをチェックすることを望んだ。
Madbreaks 2013


0

これを試してください

/**
  * Checks the string if undefined, null, not typeof string, empty or space(s)
  * @param {any} str string to be evaluated
  * @returns {boolean} the evaluated result
*/
function isStringNullOrWhiteSpace(str) {
    return str === undefined || str === null
                             || typeof str !== 'string'
                             || str.match(/^ *$/) !== null;
}

こんな風に使えます

isStringNullOrWhiteSpace('Your String');


0
function isEmptyOrSpaces(str){
    return str === null || str.match(/^[\s\n\r]*$/) !== null;
}

0

あなたはこれを試すことができます:

do {
   var op = prompt("please input operatot \n you most select one of * - / *  ")
} while (typeof op == "object" || op == ""); 
// execute block of code when click on cancle or ok whthout input
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.