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


134

检查字符串是否仅包含空格的最佳方法是什么?

该字符串允许包含与空格组合的字符,但不仅限于空格。

Answers:


293

无需检查整个字符串是否只有空格,而是要检查是否至少有一个空格字符:

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

7
只需注意myString为空值。它将返回true:/\S/.test(null)== true
Dilshod Tadjibaev 2014年

6
这些答案中有很多都包含正则表达式!这是否意味着在js中没有本机检测方法?没有字符串。是空白还是什么?也没有原生修饰吗?
JonnyRaa

4
@JonnyLeeds由于regex甚至在js中都支持语法,因此可以说它实际上比任何附带的实用程序方法都更原生;)
Ricardo van den Broek

38

如果您的浏览器支持该trim()功能,则最简单的答案

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

如今,当IE 8是RIP时,这是依赖本机实现的最干净,最有效的解决方案性能。它可以与制表符和换行符一起正确使用。
亚历山大·阿巴库莫夫

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

这会检查1个或多个空格字符,如果您还匹配一个空字符串,请替换+*


18

好吧,如果您使用的是jQuery,它会更简单。

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

1
同样适用于换行符和制表符,而上面的正则表达式示例则不然,因为它们仅在查找空格以外的内容。虽然,我敢肯定具有某些正则表达式知识的人可以创建正则表达式,该正则表达式还将在搜索中包含制表符/换行符。
凯特

当为val分配了空间(在我的情况下为四个空间)时,它不起作用。
user1451111

7

只需对照此正则表达式检查字符串即可:

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

1
我读问题的方式是,只要字符串不是/ only /空格,就允许/ any /空格。如果字符串为空,该怎么做是沉默的,所以可能是尼克的答案还是更好。
伊恩·克莱兰

1
if (!myString.replace(/^\s+|\s+$/g,""))
  alert('string is 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

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

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

0

这可能是快速的解决方案

return input < "\u0020" + 1;

那只是在做return input < " 1"; 那只是在按字母比较。只要将输入排序为低于“ 1”,它将返回true。示例: return " asdfv34562345" < "\u0020" + 1;计算结果为true。
Derek Ziemba
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.