驗證字符串必須包含字母、數字、_
/^(?=.*\d+)(?=.*_+)(?=.*[A-Za-z]+)[\w]{6,16}$/
表示長度爲6-16位同時包含:數字、字母 、 _
正則表達式
. 表示匹配除"\n"(換行符)和"\r"(回車符)以外的任何單個字符。
* 表示匹配前面的子表達式任意次。
() 表示將()的表達式定義爲「組」 ,而且將匹配這個表達式的字符保存到一個臨時區域(一個正在表達式中最多能夠保存9個),它們能夠用 \1 至 \9 的符號來引用。
spa
另外這裏主要用到了js正則表式中的正向前瞻 (?=),舉個栗子字符串
/\d.exec(‘abc2abc’)/ 匹配結果爲2,解釋:匹配一個數字
/\d(?=a)/.exec(‘abc2abc’)/ 匹配結果爲2,解釋:匹配一個數字,可是這個數字後面必須跟着字母a
class
由此能夠看出,(?=) 匹配結果中不包含它所匹配的字符,可是待匹配字符串必須符合它所對應的規則
當有多個前瞻規則時它們是並列的,不是串行的,好比
引用
/\d(?=a)(?=b)/.exec(「abc2bc」) 匹配結果爲null,解釋:匹配一個數字,這個數字後面必須跟着字母a和字母b,這確定是不可以成立的。di
/\d(?=a)(?=.b)/.exec(「abc2abc」) 匹配結果爲2,解釋:匹配一個數字,知足條件
①數字後面必須跟着數字a
②數字後面必須是包含一個任意字符後跟着b (.b)
co
因此**/^(?=.*\d+)(?=.*_+)(?=.*[A-Za-z]+)\w{6,16}$/**正則表達式就能夠拆分紅字符
/^(?=.*\d+)[\w]{6,16}$/ 解釋:匹配屬於\w而且任意字符事後必須跟着數字
/^(?=.*_+)[\w]{6,16}$/ 解釋:匹配屬於\w而且任意字符事後必須跟着_
/^(?=.*[A-Za-z]+)[\w]{6,16}$/ 解釋:匹配屬於\w而且任意字符事後必須跟着字母
數字
驗證字符串必須包括至少1個大寫字母,1個小寫字母,1個數字,1個特殊字符
/^(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*?]).{6,16}$/ab
與上面的分析相同