2013-04-07 111 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 
    }