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