求一个正则表达式?
账号限制20位,字符只要下划线、数字、字母;区分大小写
就是里面必须有大写小写数字和下划线都必须存在,字符只能是下划线其他字符不行
正则实在是写不出来。
回答
/^[_0-9a-zA-Z]{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}$/
以上是 求一个正则表达式? 的全部内容, 来源链接: utcz.com/a/35647.html