web-dev-qa-db-ja.com

JavaScriptの 'IsNullOrWhitespace'?

.NETのJavaScriptと同等の String.IsNullOrWhitespace クライアント側のテキストボックスに目に見えるテキストがあるかどうかを確認できるように?

テキストボックスの値をポストバックするよりも最初にクライアント側でこれを行い、サーバー側の検証のみに依存します。

52
Scott

独自のロール

function isNullOrWhitespace( input ) {

    if (typeof input === 'undefined' || input == null) return true;

    return input.replace(/\s/g, '').length < 1;
}
69
Dexter

簡潔でモダンなクロスブラウザ実装の場合、次のようにします。

function isNullOrWhitespace( input ) {
  return !input || !input.trim();
}

jsFiddle です。以下の注意事項。


現在受け入れられている答え は、次のように簡略化できます。

function isNullOrWhitespace( input ) {
  return (typeof input === 'undefined' || input == null)
    || input.replace(/\s/g, '').length < 1;
}

さらに、偽造を活用して、さらに次のことを行います。

function isNullOrWhitespace( input ) {
  return !input || input.replace(/\s/g, '').length < 1;
}

trim()は最近のすべてのブラウザで利用可能 なので、オプションで正規表現を削除できます:

function isNullOrWhitespace( input ) {
  return !input || input.trim().length < 1;
}

そして、ミックスにもう少し虚偽を追加して、最終的な(簡略化された)バージョンを生成します。

function isNullOrWhitespace( input ) {
  return !input || !input.trim();
}
57
user4942583

いいえ、しかし、あなたは1つを書くことができます

function isNullOrWhitespace( str )
{
  // Does the string not contain at least 1 non-whitespace character?
  return !/\S/.test( str );
}
3
Peter Bailey

これを試してみてください

/**
  * 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

2つのベストアンサーの関連部分を引き出すと、次のような結果が得られます。

function IsNullOrWhitespace(input) {
    if (typeof input === 'undefined' || input == null) return true;
    return !/\S/.test(input); // Does it fail to find a non-whitespace character?
}

この回答の残りの部分は、この回答とデクスターの回答のパフォーマンスの違いに関心がある人のみを対象としています。どちらも同じ結果を生成しますが、このコードはわずかに高速です。

私のコンピューターでは、次のコードでQUnitテストを使用します。

var count = 100000;
var start = performance.now();
var str = "This is a test string.";
for (var i = 0; i < count; ++i) {
    IsNullOrWhitespace(null);
    IsNullOrWhitespace(str);
}
var end = performance.now();
var elapsed = end - start;
assert.ok(true, "" + count + " runs of IsNullOrWhitespace() took: " + elapsed + " milliseconds.");

結果は次のとおりです。

  • RegExp.replaceメソッド= 33-37ミリ秒
  • RegExp.testメソッド= 11-14ミリ秒
0
John Fisher

正規表現/\S/を使用して、フィールドが空白かどうかをテストし、それをnullチェックと組み合わせることができます。

例:

if(textBoxVal === null || textBoxVal.match(/\S/)){
    // field is invalid (empty or spaces)
}
0
McStretch

trim()は、JSにはない便利な文字列関数です。

追加してください:

_String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,"") }
_

次に:if (document.form.field.value.trim() == "")

0
T4NK3R

独自に作成する必要があります。

function isNullOrWhitespace(strToCheck) {
    var whitespaceChars = "\s";
    return (strToCheck === null || whitespaceChars.indexOf(strToCheck) != -1);
}
0
lukastymo