我一直在爲這些亂七八糟的東西而努力。我記得一位講師曾經告訴過我們,如果你有一個問題需要你使用正則表達式來解決它,你現在實際上有兩個問題。用戶名不能包含重複的下劃線或句點
那麼,我當然同意這一點。正則表達式是我們不經常使用的東西,但是當我們喜歡閱讀某種外來語言時(對我來說無論如何)...我想我會決定去閱讀本書並進一步閱讀。
我的挑戰是這一點,我需要驗證基於以下條件的用戶名:(.
- 可包含字母,上部和下部
- 可以包含數字
- 可以含有周期)和下劃線(
_
) - 週期和下劃線不能連續,即
__
..
不允許,但._._
將是有效的。 - 總
到目前爲止,我有以下的最多20個字符:^[a-zA-Z_.]{0,20}$
但當然可以重複下劃線和句點。
現在,我可能會做這一切錯誤開始與有效字符和最大長度的設置。我一直在嘗試(不成功)創建一些環視或後臺或搜索週期(.
)和下劃線(_
)的無效重複的內容,但不確定將此要求分解爲正則表達式解決方案的方法或方法是。
任何人都可以幫助建議/替代方法或指向正確的方向嗎?
你忘了你的正則表達式中的數字;另外,你只是想允許ASCII字母/數字?你使用的是哪種正則表達式引擎(順便說一下,這是StackOverflow上所有正則表達式問題的必要信息)? –
正則表達式仍然是要走的路。如果使用它們,解析字符串所需的所有知識都在正則表達式中。如果你不使用它們,知識就會遍佈整個地方,並且你有一堆for循環,大量的字符串操作和數百萬的邊界情況,你可能會忘記實現,所產生的代碼甚至是buggier,更難閱讀。不要讓講師勸阻你,如果你對任何事情都不夠了解,那很難,如果你知道的夠多,這很容易。 – escitalopram
啊是好的發現我輸入錯誤的應該是^ [a-zA-Z0-9_。]這對於確保所有有效的ASCII字符是足夠好的,但是我正在努力處理需求#4而不分裂成2個表達式。在正則表達式引擎方面,我驗證了客戶端(Javascript)和服務器端ASP.NET 4.5 – SpaceKat