【问题标题】:Regex for empty string or white space空字符串或空格的正则表达式
【发布时间】:2013-10-07 22:03:40
【问题描述】:

我正在尝试检测用户是否在文本框中输入了空格:

 var regex = "^\s+$" ; 
 if($("#siren").val().match(regex)) {
     echo($("#siren").val());
     error+=1;
    $("#siren").addClass("error");
    $(".div-error").append("- Champ Siren/Siret ne doit pas etre vide<br/>");
 }

if($("#siren").val().match(regex)) 应该匹配空白字符串,但是,它似乎不起作用,我做错了什么?

感谢您的帮助

【问题讨论】:

  • 当您说“似乎不起作用”时,您能更具体一点吗?您可以分享任何失败的示例输入吗?

标签: javascript jquery regex


【解决方案1】:

如果只关心字符串开头和结尾的空格(而不关心中间的空格),那么另一种选择是使用 String.trim():

"    your string contents  ".trim();

// => "your string contents"

【讨论】:

    【解决方案2】:

    遇到类似问题,正在寻找字符串中的空格,解决方法:

    • 要搜索 1 个空格:

      var regex = /^.+\s.+$/ ;
      

      示例:“用户姓氏”

    • 要搜索多个空格:

      var regex = /^.+\s.+$/g ;
      

      示例:“用户姓氏”

    【讨论】:

      【解决方案3】:

      http://jsfiddle.net/DqGB8/1/

      这是我的解决方案

      var error=0;
      var test = [" ", "   "];
       if(test[0].match(/^\s*$/g)) {
           $("#output").html("MATCH!");
           error+=1;
       } else {
           $("#output").html("no_match");
       }
      

      【讨论】:

        【解决方案4】:

        如果您正在寻找除了空格之外的空字符串,您应该使用 * 而不是 +

        var regex = /^\s*$/ ;
                        ^
        

        【讨论】:

          【解决方案5】:

          .match 调用中的 \(反斜杠)未正确转义。不过,使用正则表达式文字会更容易。两者都可以:

          var regex = "^\\s+$";
          var regex = /^\s+$/;
          

          还要注意+ 至少需要一个空格。您可能想使用*

          【讨论】:

          • 我使用 var regex = "^\\s+$";它就像一个魅力,非常感谢你们所有人
          【解决方案6】:

          如果你使用 jQuery,你有.trim()

          if ($("#siren").val().trim() == "") {
            // it's empty
          }
          

          【讨论】:

          • 如果只需要支持JavaScript 1.8的浏览器,有String.trim
          • @ExplosionPills 我确定 jQuery 在内部执行此操作,并且 OP 已经使用 jQuery。
          • @Overcode 您在哪里看到了简单性? trim() 也使用正则表达式,比 /^\s*$/ 更复杂
          • 恕我直言,这比正则表达式更清楚地显示了代码的意图。说foo.trim() == '' 是在说“这个字符串,忽略空格,是空的吗?”。说foo.match(/^\s*$/) 是在问“字符串 foo 是否与正则表达式定义的状态机匹配?”。是的,正则表达式很简单,但仍然不太清楚。你也不能保证trim 是通过正则表达式定义的,很多 JS 引擎都内置了它。
          • @yan 关于原生修剪的观点。至于“状态机”部分,你做得过火了:-)
          猜你喜欢
          • 2021-07-04
          • 2017-08-01
          • 1970-01-01
          • 2021-12-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多