0
我試圖建立一些正則表達式,可以檢測到有人試圖用點「填寫」他們的用戶名。正則表達式來檢測填充字符長度與週期
還有一些其他要求:
- 用戶名只能包含字母,數字和點
- 用戶名必須啓動並以字母或數字
- 結束,但不超過一個連續的點
- 最小的6個字符(字母和數字)
例如:
- abcde6被允許(沒有抓到),因爲它有6個字符
- abcd5不是(被抓),因爲它不具備的前提6個字符
說我的方式構建正則表達式是,如果有匹配,它將拒絕允許的用戶名。
什麼我迄今是:
/[^a-z0-9.]|^\.|\.$|\.{2,}|\S{31,}|^\S{0,5}$/i
這捕獲:
- 不屬於字母,數字的任何字符,點
- 不能以點開始
- 不能以點結束
- 不能有2個或更多個連續點
- 不能有31個或更多字符
- 不能有5點或更少的字符
我試過幾十種不同的方式來獲得的地方,最後檢查,但他們都要麼打破整個檢查,包括允許(abcde6)或只是沒有工作。
,我已經最接近與一個是:
(\.{1}[a-z0-9]{1,}){1,3}\S{1,}$
這裏的問題是,它也趕上123.456(這應該被允許/抓不到)字符串的其他
例子它應該抓住:
- asdf.g
- a.sdfg
- a.sdf.g
- as.df.g
我試圖做到這一點只用正則表達式,而無需預先格式化使用JS吧。
'.length'屬性是否足夠?它應該讓你的表情更加複雜。 – npinti
試圖在'\。\。'上匹配時是否有問題? – Bohemian
如何使用*匹配*正則表達式並檢查不匹配:http://jsfiddle.net/ew88c8wt/2/?在regex101.com的正則表達式:https://regex101.com/r/qS7mY5/1 –