求一个正则表达式?

账号限制20位,字符只要下划线、数字、字母;区分大小写
就是里面必须有大写小写数字和下划线都必须存在,字符只能是下划线其他字符不行
正则实在是写不出来。

回答

/^[_0-9a-zA-Z]{20}$/

55555555555555.png

// 不能通过一个正则处理,需要多个正则

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

回到顶部