2012-01-23 218 views
3

我試圖驗證以下條件:允許
人物,5最大長度:AZ,0-9,空格和(' -
,這是我這麼遠:正則表達式檢查兩個連續空格嗎?

/^[a-zA-Z,\d,\-,\(,\']{1,5}$/; 

如何檢查連續兩個空格?

+0

對不起出事了與瀏覽器。連續兩個空格。 – user1127051

+0

你是否試圖匹配兩個連續的空格*除了*你列出的內容?或者只是連續兩個空格? –

回答

7

可能會再次對/\s\s/匹配。

0

你不需要在你的正則表達式的逗號,它們將引起它行爲不端。寫代替

/^[a-zA-Z\d\-\(\']{1,5}$/ 

我不確定你的意思是關於兩個連續的空格,因爲它似乎不適用於問題的其餘部分。像/ / regex將匹配一對空間,或/\x20\x20//[ ][ ]/,使他們更加明顯。

+0

你的第二個正則表達式事實上並不匹配一對空格;我只在斜線之間看到一個。我可能會把它寫成:'/ {2} /' –

+0

這就是爲什麼我提出了替代方案。相信我這裏有兩個空格 - 將表達式複製並粘貼到編輯器中查看。 – Borodin

+0

爲什麼不使用'\ s'? –

1

您可以通過使用正則表達式的重複檢查,連續兩個空格。 即 如果你想匹配其重複1至12倍之間的話,你可以給一個正則表達式,

regex{1, 12} 

同樣,如果u想匹配其重複剛纔兩倍的空間,不超過或更少那麼,你可以給

\s{2} 

請記住,這是檢查重複模式的一般方法。花括號中的數字總是會嘗試查看以前的正則表達式所具有的重複次數。

喝彩!

+2

請注意'\ s'不僅僅與空格相匹配。它也將匹配選項卡,回車,換行符或其他一些奇怪的空白字符(例如,垂直製表符)。 –

+0

@JonahBishop感謝您的信息:D即使我不知道:D – Ricketyship

0

這將是東西,你可以使用:

var string = "SD D"; 

if (string.match(/^[A-Z\d\s\(\-']{1,5}$/)) { 
    alert(string.match(/\s{2,}/) != null?"Has consecutive spaces of length 2+" : "Does not have consecutive spaces"); 
} 
1

所以我的假設,你要允許空格字符,但要禁止連續的空格(你不說清楚你要哪種方式檢查他們)。

你可以用負先行實現這一目標。

^(?!.* )[a-zA-Z\d(' -]{1,5}$ 

只需添加的空間,角色職業,使用零寬度負預測先行斷言,以確保表達式會失敗,如果有兩個連續的空格字符。

看到它here on Regexr

順便說一句。我從字符類中刪除了大部分轉義字符的逗號,並將連字符移到了類的最後。

0

\s{2}接近,但\s多種類型的空白匹配。 '{2}'(漂亮的代碼格式奪走了空間)適合我。