如何创建一个接受至少一个小写和一个数字的正则表达式?

时间:2017-03-27 00:38:29

标签: javascript regex

此表达式必须符合特定规则:

1.-总共2到8个字符 2.-以大写字母开头。
3.-包含小写和数字。

第一个和第二个应该很容易,但我不能让第三个工作。

这是我提出的表达方式

([A-Z]+[A-Za-z0-9]*){2,8}  

但它会返回错误的回复。正则表达式远非我的强项,这是我第一次在课外使用它们。

这是我的代码,如果它有帮助

    var expresion = /([A-Z]+[A-Za-z0-9]*){2,8}/;
    var re = new RegExp(expresion); 
    var t = $('#code').val(); 
    if (re.test(t)) { 
        console.log(t+' works');
    } else {
        console.log(t+' not working');
    }

2 个答案:

答案 0 :(得分:1)

使用符合每个条件的look aheads

/^(?=[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.{2,8}$)(.*)/m

Demo

(如评论中所述,您的目标模式至少包含3个字符以及其他条件......)

答案 1 :(得分:1)

这应该符合您的文字要求(但是,正如评论所述,它们并没有真正意义):

^(?=.{2,8}$)(?=.*[0-9])(?=.*[a-z])[A-Z][a-zA-Z0-9]*$

首先,您需要使用^(字符串的开头)和$锚定您的匹配项;否则你可能只是选择一个匹配的子字符串,这会弄乱你的要求。

其次,我们使用lookahead来验证几个单独的点:字符串在结束之前包含2到8个字符,字符串包含一个数字。

第三,我们使用字符类来验证它以大写字母开头,并继续混合使用大写,小写和数字。

编辑:忘了小写的要求,谢谢nnnnnn。你是对的,你的版本更好。