用一个表达式太难,拆成两步判断就很容易了。JavaScript的例子:var str = 'test@ABC123';if(/^[\w\W]{6,18}$/.test(str) && str.replace(/[a-z0-9]/ig, '').length == 1) { alert('合法');} else { alert('不合法');}