空字符串或空格的正则表达式
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 关于原生修剪的观点。至于“状态机”部分,你做得过火了:-)以上是关于空字符串或空格的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章