JavaScript 中的“ IsNullOrWhitespace”?

是否有一个等效于。NET 的 String.IsNullOrWhitespace,以便我可以检查,如果一个文本框在客户端有任何可见的文本吗?

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

50911 次浏览

自己卷吧来说很简单:

function isNullOrWhitespace( input ) {


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


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

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

例如:

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

不,但你可以写一首

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

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

加上:

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

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

你必须自己写:

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

把两个最佳答案的相关部分拉出来,你会得到这样的结果:

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

这个答案的其余部分只是为那些对这个答案和 Dexter 的答案之间的性能差异感兴趣的人准备的。两者都将产生相同的结果,但是这段代码稍微快一些。

在我的计算机上,通过以下代码使用 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.");

结果是:

  • Place 方法 = 33-37毫秒
  • Test 方法 = 11-14毫秒

对于一个简洁的现代跨浏览器实现,只需要:

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;
}

饰()在最近的所有浏览器中都可用,所以我们可以选择删除正则表达式:

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

再加上一点错误,最终得出(简化的)结论:

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

试试这个

检查字符串是否为未定义、 null、而不是 typeof string、 null 或 space

/**
* 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');