此表达式必须符合特定规则:
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');
}
答案 0 :(得分:1)
使用符合每个条件的look aheads:
/^(?=[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.{2,8}$)(.*)/m
(如评论中所述,您的目标模式至少包含3个字符以及其他条件......)
答案 1 :(得分:1)
这应该符合您的文字要求(但是,正如评论所述,它们并没有真正意义):
^(?=.{2,8}$)(?=.*[0-9])(?=.*[a-z])[A-Z][a-zA-Z0-9]*$
首先,您需要使用^
(字符串的开头)和$
锚定您的匹配项;否则你可能只是选择一个匹配的子字符串,这会弄乱你的要求。
其次,我们使用lookahead来验证几个单独的点:字符串在结束之前包含2到8个字符,字符串包含一个数字。
第三,我们使用字符类来验证它以大写字母开头,并继续混合使用大写,小写和数字。
编辑:忘了小写的要求,谢谢nnnnnn。你是对的,你的版本更好。