2013-04-07 82 views
1

我想检查一下,如果我的用户名包含空格,那么它会提醒,所以我这样做,但它的工作,但我面临的一个问题是,如果我给空间开始,那么它不alert.I搜索它但无法找到解决办法,我的代码是这样的检查字符串中的空格

var username = $.trim($('#r_uname').val()); 
var space = " "; 
    var check = function(string){ 
    for(i = 0; i < space.length;i++){ 
    if(string.indexOf(space[i]) > -1){ 
     return true 
     } 
    } 
    return false; 
    } 

    if(check(username) == true) 
    { 
    alert('Username contains illegal characters or Space!'); 
    return false; 
    } 
+1

[正则表达式](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions)。此外,你正在修剪字符串,所以它的开头怎么会有空格? – 2013-04-07 04:22:46

+0

我在db中使用trim bt它不会删除空间 – 2013-04-07 04:35:33

+1

听起来好像你在说你想知道一个字符串是否在它的开头有一个空格,但是在你检查之前你正在修剪这个空格。所以解决方案是不修剪字符串... – 2013-04-07 04:55:30

回答

7

只需使用.indexOf()

var check = function(string) { 
    return string.indexOf(' ') === -1; 
}; 

您还可以使用正则表达式的用户名限制在特定的格式:

var check = function(string) { 
    return /^[a-z0-9_]+$/i.test(string) 
}; 
+0

indexOf将是最快的方法(与检查空间的正则表达式),但是白名单他们可以通过正则表达式使用可能是更安全比黑名单他们不能。 – Ryan 2013-04-07 04:28:41

+0

@Blender我使用第一种方法,但它在第一种情况下工作,如果我给这个字符串,那么它不工作'空间abc def' – 2013-04-07 04:34:09

+0

@AzamAlvi:将'==='更改为'!=='。 – Blender 2013-04-07 04:35:29

3

您应该使用正则表达式与\s,检查是否有空白字符:

if (username.match(/\s/g)){ 
    alert('There is a space!'); 
} 

看到活动的代码在此jsFiddle

+0

它和我的功能一样。没有alrt如果空间是在开始 – 2013-04-07 04:30:30

+0

检查出我发布的jsFiddle的链接,它按预期工作。 – doublesharp 2013-04-07 04:33:54

+0

open is link http://jsfiddle.net/5vzZf/2/ – 2013-04-07 05:00:15

1

为什么你不使用这样的东西?

if(string.indexOf(space) > -1){ 
    return true 
    }