如何检查字符串是否包含字符和空格,而不仅仅是空格?

166

如何最好地检查字符串是否只包含空白字符?

该字符串允许包含与空格组合在一起的字符,但不允许只有空白字符。

9个回答

336

不要检查整个字符串是否只包含空格,只需检查是否至少有一个非空白字符:

if (/\S/.test(myString)) {
    // string is not empty and not just whitespace
}

10
请注意,myString的值如果为null,将返回true:/\S/.test(null) == true - Dilshod Tadjibaev
7
很多回答中都有正则表达式!这是不是意味着在JS中没有原生的方法来检测东西?难道没有像 string.IsWhitespace 这样的方法吗?还是说没有原生的 trim 方法? - JonnyRaa
8
@JonnyLeeds 因为正则表达式在 JavaScript 中甚至具有语法支持,所以有人可以说它比任何已经内置的实用方法更本地化 ;) - Ricardo van den Broek

70

如果您的浏览器支持trim()函数,则最简单的答案是:

if (myString && !myString.trim()) {
    //First condition to check if string is not empty
    //Second condition checks if string contains just whitespace
}

1
现在IE 8已经停止更新,这是最干净和最高效的解决方案,依赖于本地实现。它可以正确地处理选项卡和换行符。 - Alexander Abakumov

38
if (/^\s+$/.test(myString))
{
      //string contains only whitespace
}

这段代码检查是否存在一个或多个空格字符,如果您想匹配空字符串,则将 + 替换为 *


23

如果你正在使用jQuery,那就更简单了。

if ($.trim(val).length === 0){
   // string is invalid
} 

2
适用于换行和制表符,而上面的正则表达式示例不适用,因为它们只寻找除空格以外的任何东西的缺失。虽然,我相信有些了解正则表达式的人可以创建一个也包括制表符/换行符在内的正则表达式来进行搜索。 - Kate
在我的情况下,当val被赋值为空格时,即四个空格时,它无法工作。 - user1451111

8

只需使用此正则表达式检查字符串:

if(mystring.match(/^\s+$/) === null) {
    alert("String is good");
} else {
    alert("String contains only whitespace");
}

1
我的理解是,只要字符串不是仅由空格组成,就允许使用 / 任何 / 空格。但是对于空字符串该怎么处理没有说明,因此nickf的回答可能仍然更好。 - Ian Clelland

1
if (!myString.replace(/^\s+|\s+$/g,""))
  alert('string is only whitespace');

1

我使用了以下方法来检测字符串是否仅包含空格。它也匹配空字符串。

if (/^\s*$/.test(myStr)) {
  // the string contains only whitespace
}

0
我最终使用的正则表达式是为了允许字符串中间有空格,但开头和结尾不能有空格:
[\S]+(\s[\S]+)*

或者

^[\S]+(\s[\S]+)*$

我知道这是一个老问题,但你可以做类似这样的事情:

if (/^\s+$/.test(myString)) {
    //string contains characters and white spaces
}

或者你可以像nickf所说的那样使用:

if (/\S/.test(myString)) {
    // string is not empty and not just whitespace
}

0

这可以是一个快速的解决方案

return input < "\u0020" + 1;

这只是在执行 return input < " 1";,也就是进行字母比较。只要输入的内容按照字母顺序排列在 " 1" 之前,它就会返回 true。例如:return " asdfv34562345" < "\u0020" + 1; 将会被计算为 true。 - Derek Ziemba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接