我正在與我的正則表達式摔跤。 我想只允許字母和數字,並在用戶名點,2〜20個字符長 我想到了這樣的事情c#正則表達式問題:只允許字母,數字和點(2到20個字符)允許
[0-9A-ZA-Z] {2,20}
但隨後21個字符也行,這不是我想要什麼
我正在與我的正則表達式摔跤。 我想只允許字母和數字,並在用戶名點,2〜20個字符長 我想到了這樣的事情c#正則表達式問題:只允許字母,數字和點(2到20個字符)允許
[0-9A-ZA-Z] {2,20}
但隨後21個字符也行,這不是我想要什麼
我建議你做兩個檢查 - 一個長度和一個基於內容的事實上,你可能只需要名稱中的一個點,而不是任何數量的點。我會假設像username
和user.name
這樣的名稱是唯一允許的格式。
這應該得到的內容(但允許下劃線以及):
^\w+(\.\w+)?$
如果你不想下劃線,那麼你就代替\w+
使用[0-9a-zA-Z]+
。爲了解釋,它將匹配任何由一個或多個單詞字符組成的字符串,後跟正好是0或1的點後跟一個或多個單詞字符。它還必須匹配字符串的開頭和結尾,即字符串中不允許其他字符。
然後你只需要通過一個簡單的長度檢查來獲得長度。
非常好!是的,這個點有點困難。 .........可能是壞的,但jpvan.der.bilt可能是正確的 – Michel 2010-05-17 19:09:19
@Michel - 那麼你可以將'(\。\ w +)?'改成'(\。\ w +)* '接受零個或多個而不是零個或一個。 – tvanfosson 2010-05-17 19:31:13
工作!謝謝。 – Michel 2010-05-18 09:56:06
^[0-9a-zA-Z\.]{2,20}$
我懷疑'........... .........'不允許。 – tvanfosson 2010-05-17 14:49:41
啊,開始和結束,謝謝 – Michel 2010-05-17 19:09:51
嘗試^[\w\.]{2,20}$
來代替。
您需要使用的開始和結束字符串(^
和$
),並且逃脫.
:
^[0-9a-zA-Z\.]{2,20}$
我認爲你需要更明確一點。我懷疑你想要一個由所有點組成的用戶名。我認爲它會更像'username'或'user.name',但'user.','.user'和'......'不是。 – tvanfosson 2010-05-17 14:54:43
我注意到有幾千封信件被排除在外。那是故意的嗎? – 2010-05-17 15:15:31
@tvanfosson好吧,它是管理功能,所以也會有一些用戶的想法,但你是對的,我的算法不會限制這個 – Michel 2010-05-17 19:07:27