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

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

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

【问题讨论】:

    标签: javascript string whitespace


    【解决方案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; 计算结果为真。
            猜你喜欢
            • 2011-01-25
            • 1970-01-01
            • 2014-08-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-06-09
            • 1970-01-01
            相关资源
            最近更新 更多