大家好我在javascript test()方法中制作一个密码正则表达式,它将采取以下输入
溶液
/^(?=.*\d)^(?=.*[!#$%'*+\-/=?^_{}|~])(?=.*[A-Z])(?=.*[a-z])\S{8,15}$/gm
可能包含空格以外的任何字母
至少8个字符,但不超过15个字符
至少取一个大写和一个小写字母
至少选择一个数字和一个特殊字符
但是我无法使用(句点,点,fullStop)执行以下任务
(点,句号,句号),前提是它不是第一个或最后一个字符,并且它也不连续出现两次或多次。
任何人都可以帮我解决这个问题,提前谢谢
答案 0 :(得分:1)
您可以将带有\S{8,15}
锚点的$
部分移动到正向前瞻,并将其作为第一个条件(如果有空格则将整个字符串失败,或者长度小于8或大于15)并用[^.]+(?:\.[^.]+)*
消耗子模式替换该模式。
/^(?=\S{8,15}$)(?=.*\d)(?=.*[!#$%'*+\/=?^_{}|~-])(?=.*[A-Z])(?=.*[a-z])[^.]+(?:\.[^.]+)*$/
请参阅regex demo
<强>详情:
^
- 字符串开头(?=\S{8,15}$)
- 第一个要求字符串没有空格且长度为8到15个字符的条件(?=.*\d)
- 任何0+字符后必须有一个数字(?=.*[!#$%'*+\/=?^_{}|~-])
- 在任何0+字符(?=.*[A-Z])
- 需要大写的ASCII字母(?=.*[a-z])
- 需要小写ASCII字母[^.]+(?:\.[^.]+)*
- 除.
以外的1个字符,后跟0个或多个.
序列,后跟1个或多个字符而不是点( note 我们不必将\s
添加到这两个否定的字符类中,因为第一个预测已经预先验证了整个字符串及其长度)$
- 字符串结束。