70

是否有与 .NET 等效的 JavaScript,String.IsNullOrWhitespace以便我可以检查客户端上的文本框是否有任何可见文本?

我宁愿先在客户端执行此操作,也不愿回发文本框值并仅依赖服务器端验证,即使我也会这样做。

4

8 回答 8

88

对于简洁的现代跨浏览器实现,只需执行以下操作:

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();
}
于 2015-09-26T18:44:25.950 回答
86

自己动手很容易:

function isNullOrWhitespace( input ) {

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

    return input.replace(/\s/g, '').length < 1;
}
于 2011-04-05T22:46:48.627 回答
4

不,但你可以写一个

function isNullOrWhitespace( str )
{
  // Does the string not contain at least 1 non-whitespace character?
  return !/\S/.test( str );
}
于 2011-04-05T22:48:13.050 回答
2

试试这个

检查字符串是否未定义、null、不是字符串类型、空或空格(s

/**
  * 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');
于 2018-11-22T08:15:27.363 回答
0

您可以使用正则表达式/\S/来测试字段是否为空格,并将其与空检查结合起来。

前任:

if(textBoxVal === null || textBoxVal.match(/\S/)){
    // field is invalid (empty or spaces)
}
于 2011-04-05T22:46:51.090 回答
0

trim()是 JS 缺少的一个有用的字符串函数。

添加它:

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

然后:if (document.form.field.value.trim() == "")

于 2011-04-05T22:49:55.383 回答
0

您必须自己编写:

function isNullOrWhitespace(strToCheck) {
    var whitespaceChars = "\s";
    return (strToCheck === null || whitespaceChars.indexOf(strToCheck) != -1);
}
于 2011-04-05T22:50:48.033 回答
0

提取两个最佳答案的相关部分,您会得到如下信息:

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 毫秒
于 2015-06-11T22:13:43.780 回答