Asi*_*eed 2 regex asp.net-mvc-3
我有以下要求:
密码必须是6-18个字符,并且至少包含一个字母和一个数字.允许使用@,%,&等#等特殊字符.
我创造了这个:
^.*(?=.{6,18})(?=.*\d)(?=.*[A-Za-z])(?=.*[@%&#]).*$
Run Code Online (Sandbox Code Playgroud)
但是它也接受像_这样的其他特殊字符,它要求@%中的一个特殊字符必须在字符串中.我想让这个可选.意味着如果用户输入其中一个特殊字符,则字符串应该有效,但如果用户没有输入这些字符,那么它不应该是无效的.如果用户输入任何其他特殊字符,则字符串应无效.
正如其他响应者所说的那样,.*那就是匹配那些不需要的角色.第一个.*应该不存在,第二个应该用字符类替换.
或者甚至更好,$在第一个前瞻的末尾添加一个; 现在它验证了长度和构图.在.*因为该组合物已经过验证的结束和那名向前看符号内的两个都还好.
^(?=[A-Za-z0-9@%&#]{6,18}$)(?=.*\d)(?=.*[A-Za-z]).*$
or, more readably:
^ # start of string
(?=[A-Za-z0-9@%&#]{6,18})$ # length and composition
(?=.*\d) # required digit
(?=.*[A-Za-z]) # required letter
.* # go ahead and consume it
$ # end of string
Run Code Online (Sandbox Code Playgroud)