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

Posted

技术标签:

【中文标题】如何检查字符串是不是包含字符和空格,而不仅仅是空格?【英文标题】:How can I check if string contains characters & whitespace, not just whitespace?如何检查字符串是否包含字符和空格,而不仅仅是空格? 【发布时间】:2011-01-03 02:49:01 【问题描述】:

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

字符串可以包含组合和空格的字符,但不能只是空格。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

请注意 myString 为空值。它将返回 true:/\S/.test(null) == true 很多这些答案中都有正则表达式!这是否意味着没有原生方法来检测 js 中的东西?有没有 string.IsWhitespace 什么的?也没有原生修剪吗? @JonnyLeeds 由于正则表达式甚至在 js 中支持语法,因此可以说它实际上比任何已发布的实用程序方法更原生;)【参考方案2】:

如果您的浏览器支持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,这是依赖本机实现的最简洁和最高效的解决方案。它适用于制表符和新行。【参考方案3】:
if (/^\s+$/.test(myString))

      //string contains only whitespace

这将检查 1 个或多个空白字符,如果您还匹配一个空字符串,则将 + 替换为 *

【讨论】:

【参考方案4】:

好吧,如果你使用的是 jQuery,那就更简单了。

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

【讨论】:

也适用于换行符和制表符,而上面的正则表达式示例并不适用,因为它们只是在寻找除空白之外的任何内容。虽然,我确信有一些正则表达式知识的人可以创建一个正则表达式,在搜索中也包括制表符/换行符。 当 val 被分配空格时不起作用,在我的例子中是四个空格。【参考方案5】:

只需对照这个正则表达式检查字符串:

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

【讨论】:

我阅读问题的方式是说 /any/ 空格是允许的,只要字符串不是 /only/ 空格。如果字符串为空,它对如何处理保持沉默,因此可能是 nickf 的答案仍然更好。【参考方案6】:
if (!myString.replace(/^\s+|\s+$/g,""))
  alert('string is only whitespace');

【讨论】:

【参考方案7】:

当我想在我的字符串中间允许空格但不在开头或结尾时,我最终使用的正则表达式是这样的:

[\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

【讨论】:

【参考方案8】:

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

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

【讨论】:

【参考方案9】:

这可以是快速的解决方案

return input < "\u0020" + 1;

【讨论】:

那只是在做return input &lt; " 1"; 这只是在做字母比较。只要输入排序小于“ 1”,它就会返回true。示例:return " asdfv34562345" &lt; "\u0020" + 1; 计算结果为真。

以上是关于如何检查字符串是不是包含字符和空格,而不仅仅是空格?的主要内容,如果未能解决你的问题,请参考以下文章

检查字符串(句子空格分隔)以查看它是不是包含数组中的任何字符

如何检查 Java 字符串是不是全是空格?

检查字符串在C中是不是只有空格字符

如何检查字符串中的空格?

如何判断字符串是不是仅包含字母和空格

检查特定字符串是否存在而不考虑空格或任何换行符