求一個驗證用戶名的正則表達式
各位大哥大姐,晚輩求一個驗證用戶名的正則表達式,苦苦思索了一個星期還是沒有弄出來,本人愚鈍,還望大家指教!
VBscript編程要求用戶名的字符控制在3至20個之間,由中文、大小寫字母、數(shù)字、下劃線、小數(shù)點、減號組成, 必須以中英文或數(shù)字開頭結(jié)尾且下劃線、小數(shù)點、減號這三個字符中的其中一個的組合不能是連續(xù)的 a__a或a–a或a..a 這樣的,但可以 a_a.a_a.a_a-a-a-a_a-a.a.a.a這樣的。
如果超出這個范圍則用戶名不通過。
就是一直弄不明白下劃線、小數(shù)點、減號這三個字符中的其中一個的組合的問題,頭都大了
此為不符合的正則:
^.{0,2}$|.{21,}|^[^A-Za-z0-9u4E00-u9FA5]|[^wu4E00-u9FA5.-]|([_.-])1
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
(?!pattern)
負向預查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如’Windows (?!95|98|NT|2000)’ 能匹配 “Windows 3.1” 中的 “Windows”,但不能匹配 “Windows 2000” 中的 “Windows”。預查不消耗字符,也就是說,在一個匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始