IsNullOrWhitespace в JavaScript? - PullRequest
       17

IsNullOrWhitespace в JavaScript?

52 голосов
/ 06 апреля 2011

Есть ли JavaScript, эквивалентный .NET String.IsNullOrWhitespace, чтобы я мог проверить, есть ли в текстовом поле на стороне клиента какой-либо видимый текст?

Я бы предпочелсначала сделайте это на стороне клиента, а затем отправьте обратно значение текстового поля и полагайтесь только на проверку на стороне сервера, хотя я это тоже сделаю.

Ответы [ 8 ]

69 голосов
/ 06 апреля 2011

Достаточно просто свернуть свой :

function isNullOrWhitespace( input ) {

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

    return input.replace(/\s/g, '').length < 1;
}
57 голосов
/ 26 сентября 2015

Для краткой современной кросс-браузерной реализации просто выполните:

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();
}
3 голосов
/ 06 апреля 2011

нет, но вы могли бы написать один

function isNullOrWhitespace( str )
{
  // Does the string not contain at least 1 non-whitespace character?
  return !/\S/.test( str );
}
0 голосов
/ 22 ноября 2018

Попробуйте это

/**
  * 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 голосов
/ 12 июня 2015

Извлеките соответствующие части из двух лучших ответов, вы получите что-то вроде этого:

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 голосов
/ 06 апреля 2011

Вы должны написать свой собственный:

function isNullOrWhitespace(strToCheck) {
    var whitespaceChars = "\s";
    return (strToCheck === null || whitespaceChars.indexOf(strToCheck) != -1);
}
0 голосов
/ 06 апреля 2011

trim() - это полезная строковая функция, в которой отсутствует JS.

Добавьте ее:

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

Тогда: if (document.form.field.value.trim() == "")

0 голосов
/ 06 апреля 2011

Вы можете использовать регулярное выражение /\S/, чтобы проверить, является ли поле пробелом, и объединить это с нулевой проверкой.

Ex:

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