2009-06-12 108 views
4

我認爲這很簡單,但我太愚蠢了寫一個。有人可以提供一個正則表達式來檢查給定的字符串是否至少有一個字母和至少一個數字?正則表達式,至少有1個字母和1個數字

也請給一些解釋。

+0

你應該說你正在使用什麼語言/框架,因爲正則表達式語法可能會有所不同。這是.NET,Perl,Python ......嗎? – AakashM 2009-06-12 08:40:32

+0

嗨,我使用.NET框架(C#) – Eros 2009-06-12 08:47:31

回答

6

的RE不是像多個訂單非常複雜的事情,好的,但這個簡單的一應表示的搭配:

[A-Za-z].*[0-9]|[0-9].*[A-Za-z] 
1

這顯然會更容易與兩個檢查,一個字符串,一個數字。

像下面這樣,如果你有這兩個數字和字母,那麼你必須定義有許多可能的工作,雖然,看到旁邊有一個字母(反之亦然):

([A-Za-z][0-9]|[0-9][A-Za-z]) 

更新:刪除了虛假的'|'。請注意,上述假設沒有其他字符是有效的,我想這可能是不可接受的。如果允許標點符號,請參閱其他答案以獲得更好的解決方案。

+1

我沒有downvote你(不是我的風格),但在我看來,你的RE將匹配字符串「0」,「A」等,即使他們沒有一個字母和一個數字。這可能是你的第二個「|」有沒有意外,但即使如此,我認爲你的假設是錯誤的 - 描述似乎表明,「0,A」是有效的,並且它旁邊沒有數字。 – paxdiablo 2009-06-12 08:48:07

+0

謝謝 - 虛假'|'在那裏,這不是我的原意。當人們不滿地說話時,它會激怒我,我只能假設它是因爲你說了什麼:) – samjudson 2009-06-12 09:04:34

2

一個最好的辦法是爲這個單獨檢查,使用正則表達式2:/[a-z]/i/\d/

否則,假設您想強制執行密碼的安全規則,請將其拆分(例如在PHP中使用str_split),並計算每種字符類型的出現次數,這會給出您對密碼強度的估計並讓你適應你的規則。

性能不是如果密碼改變,你不這樣做的20K蜇傷...

1

有人已經回答了,但你可能會發現這個有用的還...

它的一個問題一個用.NET編寫的可視化正則表達式生成器。它非常酷,你可以實時看到你會得到什麼。檢查一下here

:)

1

我不認爲它的事項很多,但我就是這麼做的。

([A-Za-z])+([0-9])+|([0-9])+([A-Za-z])+
相關問題