2012-02-13 81 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 
}