写一段匹配字符串必须有大写字母、小写字母、数字、特殊字符,并且字符不能在键盘上连续相邻3个及以上,注意是键盘上的上下左右顺序不是字母顺序,字符长度不小于10不大于20的正则表达式
时间: 2024-02-09 18:12:43 浏览: 128
正则表达式 匹配至少有一个非空白字符并且不超过指定长度
以下是可以匹配上述要求的正则表达式:
```
^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}[\]:;"'<>,.?/])(?!.*[qwertasdfgzxcvb])(?!.*[poiuy])(?!.*[hjkl])(?!.*[nm])(?!.*[QWERTASDFGZXCVB])(?!.*[POIUY])(?!.*[HJKL])(?!.*[NM])[a-zA-Z\d~!@#$%^&*()_+`\-={}[\]:;"'<>,.?/]{10,20}$
```
解析如下:
- `^` 表示匹配字符串开头。
- `(?=.*[A-Z])` 表示必须包含至少一个大写字母。
- `(?=.*[a-z])` 表示必须包含至少一个小写字母。
- `(?=.*\d)` 表示必须包含至少一个数字。
- `(?=.*[~!@#$%^&*()_+`\-={}[\]:;"'<>,.?/])` 表示必须包含至少一个特殊字符。
- `(?!.*[qwertasdfgzxcvb])(?!.*[poiuy])(?!.*[hjkl])(?!.*[nm])(?!.*[QWERTASDFGZXCVB])(?!.*[POIUY])(?!.*[HJKL])(?!.*[NM])` 表示负向前瞻,不允许包含键盘相邻的字符。
- `[a-zA-Z\d~!@#$%^&*()_+`\-={}[\]:;"'<>,.?/]{10,20}` 表示字符集合,长度在 10 到 20 之间。
- `$` 表示匹配字符串结尾。
阅读全文