需求要求:
- 位數為6~30位
- 至少包含字母、數字、下划線
_
、中划線-
中的兩種
正則表達式:
-
js表達式:
^(?!^[\d]+$)(?!^[-]+$)(?!^[_]+$)(?!^[a-zA-Z]+$)[\w-]{6,30}$
-
java表達式-字符串:
"^(?!^[\\d]+$)(?!^[-]+$)(?!^[_]+$)(?!^[a-zA-Z]+$)[\\w-]{6,30}$"
解析:
至少四種中的兩種也可以解釋為為不是純數字、不是純字母、不是純下划線,不是純中划線
測試用例:
123456a(匹配)
_12345a(匹配)
_123-45a(匹配)
123456 (6位純數字,沒有匹配)
abcdef (6位純字母,沒有匹配)
------ (6位純中划線,沒有匹配)
______ (6位純下划線,沒有匹配)
123456789012345678901234567890a(31位字母數字組合,沒有匹配)
_123-45a+(9位四種混搭多個加號,沒有匹配)
_12%3-45a(9位四種混搭多個百分比號,沒有匹配)
a-_1d(5位四種混搭,沒有匹配)