2012-02-13 83 views
0

我不是一个正则表达式的人,所以我绝对需要帮助。针对空间的正则表达式

我只想要有一个正则表达式来验证用户输入的“用户名”是否不包含空格。

目前,我有这样的结构:

if($('.username').val().length < 5) { 
    $(".user_account_validation").html("Too shorty.").css('background-color', 'red'); 
} else if() { 
} 

正如你可以看到我的else if()仍然是空的,在这我想将我的验证。如果用户名有空格,我会返回相应的错误信息。谢谢!

回答

6

有些人在遇到问题时会想:“我知道,我会用正则表达式。”现在他们有两个问题。 - Jamie Zawinski

如果你想知道的是,如果有输入空间,下面就返回-1,如果有输入空格,并将第一空间的否则该索引。

$('.username').val().indexOf(' '); 

如果您需要一个正则表达式,以下将返回第一个空格的索引,否则返回-1。

$('.username').val().search(/\s/); 
+1

这个问题是杰米的规则的完善的反例。这是因为这里匹配的语言实际上是常规的。 – 2012-02-13 03:04:04

+0

@NiklasB。我会规定这是一个正当的地方使用正则表达式,事实上,如果OP询问“我如何检查有效输入”,我会指出他是一个正则表达式,但引用是一个下意识的回应,“我有问题X,如何使用正则表达式?”。理想情况下,我们都应该在我们的工具箱中查看每一个*工具,而不是将所有东西看作是用正则表达式锤击的指甲。 – ironchefpython 2012-02-13 04:27:45

4

不需要使用正则表达式。您可以简单地使用$('.username').val().indexOf(' ') !== -1来测试它是否包含任何空格。

请注意,它不会阻止用户通过复制&粘贴来输入标签,但无论如何您需要在服务器端进行验证,所以如果您检查普通用户不会在那里输入内容,这就足够了。

+2

标签页,换行符等...? – 2012-02-13 03:02:01

+1

其实一个正则表达式在这里真的很合适,为什么不建议它(特别是因为它被要求)? – 2012-02-13 03:04:46

+0

除非你使用复制和粘贴或有一个textarea你无论如何不能输入制表符/新行。但你是对的,如果你想阻止所有的空格,正则表达式*更好。 – ThiefMaster 2012-02-13 11:25:24

3

你可以使用indexOf只是' '

else if ($('.username').val().indexOf(' ') === -1) { 
    //do stuff 
} 

,但如果你需要匹配anywhite空间,然后使用这个

else if ($('.uername').val().match(/\s/) { 
    //do stuff 
}