2015-05-26 47 views
1

我一直在使用這個網址的用戶名正則表達式在Django了一會兒:用戶名Django的URL正則表達式接受點

url(r'^.../(?P<username>[-\w]+)/$' 

但現在,我已經有了一個奇怪的情況下,有時谷歌與答案這樣的用戶名:

luke.skywalker代替lukeskywalker

它看起來像我的正則表達式不接受點 - 我得到一個NoReverseMatch錯誤。有人可以幫助我一個正確的正則表達式嗎?

+1

嘗試:[A-ZA-Z]'+',你可能要檢查的第一個答案[這裏] (http://stackoverflow.com/questions/1547899/which-characters-make-a-url-invalid) – Gocht

+1

請注意,谷歌做的非標準行爲,[email protected]和[email protected]是實際上是同一個電子郵件地址。你的問題是你不符合他們的要求(Daniel Roseman的回答應該處理,並且得到Gocht的評論答案不會的短劃線/下劃線/數字),或者你還需要「正常化」事情,以便luke.skywalker和lukeskywalker被視爲相同的用戶名?[我其實更喜歡另一種方式,我可以從同一個電子郵件地址創建一個相對較大的測試帳戶,但我可以看到正常情況可能會受到多大的影響] – Foon

+0

@Foon感謝您的信息。我正在使用Python Social Auth進行記錄(以防有人發現這種情況)。 – alejoss

回答

5

你可以只添加你想要的方括號內接受字符:

r'^.../(?P<username>[-\w.]+)/$'