空字符串或空格的正则表达式

Posted

技术标签:

【中文标题】空字符串或空格的正则表达式【英文标题】: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)) 应该匹配空白字符串,但是,它似乎不起作用,我做错了什么?

感谢您的帮助

【问题讨论】:

当您说“似乎不起作用”时,您能更具体一点吗?您可以分享任何失败的示例输入吗? 【参考方案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 关于原生修剪的观点。至于“状态机”部分,你做得过火了:-)

以上是关于空字符串或空格的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式检查字符串是不是只有空格

正则表达式表示空格或者换行

没有空格或特殊字符的正则表达式[关闭]

php正则表达怎么把一个字符串中的所有空格都转化为下划线

正则表达式查找带空格的整数中的无效字符

正则表达式删除字符前字符串中间的空格