确定字符串是否为"空"

Can*_*ain 7 javascript regex

我需要一个JavaScript函数来告诉我字符串对象是否为空.通过"空",我的意思是它不仅仅是空白字符.我写过这个原型:

String.prototype.isEmpty = function() {
  return this.length === 0 || this === " " || this.test(/^\s*$/);
}
Run Code Online (Sandbox Code Playgroud)

这好吗?

那里有更高性能的版本吗?

swe*_*ing 12

使用

String.prototype.isEmpty = function() {  
  if (!this.match(/\S/)) {
    return ('enter some valid input.Empty space is not allowed');
  } else {
   return "correct input";
  }
}


alert("test 1:"+("    ".isEmpty()));
alert("test 2:"+("   \t ".isEmpty()));
alert("test 3:"+("  \n   ".isEmpty()));
alert("test 4:"+("hi".isEmpty()));
Run Code Online (Sandbox Code Playgroud)

注意:

\ s将匹配空白字符:空格,制表符或新行.

\ S将匹配非空白字符:除了空格,制表符或新行之外的任何内容.如果你的字符串有一个不是空格,制表符或新行的单个字符,那么它不是空的.因此,您只需要搜索一个字符:\ S.


Dan*_*llo 5

看来您需要使用/^\s*$/.test(this)而不是this.test(/^\s*$/). 没有用于stringstest()的方法,除非您使用某些实现此方法的 JavaScript 库。

/^\s*$/.test(this)本来就足够了,但是如果前两个表达式中的任何一个计算结果为 true,则前两个表达式将短路,而无需测试正则表达式。这应该是非常有效的。

正如@Matthew Crumley在上面的评论中指出的那样,你的this === " "表达式将始终评估为 false。您可以删除此表达式,或者==如果您需要大量仅包含一个空格字符的字符串,则可以使用此表达式:

String.prototype.isEmpty = function() {
  return this.length === 0 || this == " " || /^\s*$/.test(this);
}
Run Code Online (Sandbox Code Playgroud)