2014-02-25 24 views
2

在C#中,我試圖驗證用戶名有以下限制:正則表達式的用戶名?

  • 大寫和小寫英文字母(A-Z,A-Z)
  • 數字0到9
  • 可接受的字符! #$%&'* + -/=?^_`{| }〜\,。 @()<> []

用戶名不限制它可以開頭的字符,以上所有都是可以接受的。你能幫我想出這個正則表達式,特別是我不得不逃脫的角色,因爲他們已經意味着正則表達式的規則?

+0

可以逃脫使用大部分 – Slicedpan

+0

反斜線@ General_9字符只要你知道,而正則表達式將工作,這是不必要的。如果這不是某種類型的項目,需要你使用正則表達式,你可以有可接受字符的字符串,並確保在用戶名的每個字符可以在字符串中找到。 –

回答

3

character class,你只需要尋找出^-]\

前三必須進行轉義或放置在明確的位置:

  • ^這是任何地方,但在類中的第一個字符,
  • -這是在類的開始或結束,
  • ]它在類的開始(這是可能的,至少在.NET中而不是在JavaScript中,例如)。

反斜線必須始終逃脫。

所以此工程:

^[]A-Za-z0-9!#$%&'*+/=?^_`{|}~\\,[email protected]()<>[-]*$ 

,但我會用

^[A-Za-z0-9!#$%&'*+/=?^_`{|}~\\,[email protected]()<>[\]-]*$ 

的便攜性。

Regular expression visualization

Debuggex Demo

+0

+1,我添加了一個Debuggex演示。 –

+1

@MichaelPerrenoud:謝謝! –

相關問題