账号限制20位,字符只要下划线、数字、字母;区分大小写
就是里面必须有大写小写数字和下划线都必须存在,字符只能是下划线其他字符不行
正则实在是写不出来。
// 不能通过一个正则处理,需要多个正则
function demo (str) {
var msg = '';
if(/[^_0-9a-zA-Z]/.test(str)) return '只能输入数字下划线字母';
if(!/\d/.test(str)) return '必需包含数字';
if(!/_/.test(str)) return '必需包含下划线';
if(!/[a-z]/.test(str)) return '必需包含小写字母';
if(!/[A-Z]/.test(str)) return '必需包含大写字母';
if(/^[_0-9a-zA-Z]{1,20}$/.test(str)) {
return '通过';
} else {
return '输入长度只能1-20';
}
}
首先感觉你的需求说的很不明确, 我不知道是如何区分大小写的,是只要大写还是只要小写字母
这种是大小写都要的
let s = /^[\w\d]{20}$/.test("123456789012345678dW")
另外正则其实很简单的
这种加限制的正则需要使用零宽断言才行,但是有些语言的正则不支持零宽断言,所以建议还是写个for循环判断一下吧,反正也就20个字符。
写了一下,这样子/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*_)[a-zA-Z0-9_]{20}$/
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决