2013-06-26 52 views
2

我需要一個正則表達式,將驗證字符串有長度7和不含元音字母,數字0和數字1如何指定一個特定長度的正則表達式,我想禁止字符而不允許它們?

我知道字符類,如[a-z],但它似乎是一個痛苦必須指定每可能性的方法:[[email protected]#$%^&*()b-df-hj-np-t...]

例如:

  • 如果我通過一個字符串June2013 - 它應該失敗,因爲該字符串的長度爲8,並且它包含2個元音和號碼0和1

  • 如果我通過一個字符串XYZ2003 - 它應該會失敗,因爲它包含0

  • 如果我通過一個字符串XYZ2223 - 它應該通過。

在此先感謝!

回答

8

因此,這將是這樣的:

^[^aeiouAEIOU01]{7}$ 

^$錨確保沒有什麼在那裏,但你指定的字符類[^...]指任何字符,除了那些上市和{7}意味着整整7人。

這是關於元音的英語定義,其他文化可能會有不同的想法,以什麼構成元音。

根據您的測試數據,結果是:

pax> echo 'June2013' | egrep '^[^aeiouAEIOU01]{7}$' 
pax> echo 'XYZ2003' | egrep '^[^aeiouAEIOU01]{7}$' 
pax> echo 'XYZ2223' | egrep '^[^aeiouAEIOU01]{7}$' 
XYZ2223 
+0

謝謝了。這是一種迫切的問題,因爲我沒有任何關於正則表達式的exp,所以想到這裏發佈。與此同時,我也試圖在我的最後發展。我也一樣 -^[^ 0-1aeiouAEIOU] {7} $ – user2522690

+0

@ user2522690那麼,接受ssolution,如果它工作 – aec

0

這是表達它的最短途徑:

(?i)^[^aeiou01]{7}$ 

術語(?i)的意思是「忽略大小寫」,這避免了打字都上部和下部元音。

相關問題