js的正则表达式,值必须是由数字和字母两部分组成,怎么写

js的正则表达式,值必须是由数字和字母两部分组成,怎么写,百度上搜的都是数字或字母组成的

阅读 3.1k
2 个回答

这个单条其实比较麻烦,其实配合一下判断就简单
比如先测试是否只由数字或字母组成,然后再分别测试是否同时包含数字和字母,即可判断啦。

/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]*$/,左右这个可以试一试,还可以确定位数,比如
/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$/是要求8-20位,只能由字母和数字,且同时包含字母和数字


其中
(?![0-9]+$) 预测该位置后面不全是数字
(?![a-zA-Z]+$) 预测该位置后面不全是字母

// 只能使数字和字母
var reg = /^[^\d]*$|^[^a-zA-Z]*$|[^\da-zA-Z]/

var str = "12345";
if (reg.test(str)) {
    console.log("值必需由数字和字母两部分组成");
    throw new Error("值必需由数字和字母两部分组成");
}

注意以上正则匹配成功,代表值不合法

推荐问题