Javascript 如何创建至少接受一个小写和一个数字的正则表达式?
此表达式必须遵守特定规则: 1.-总共2到8个字符。Javascript 如何创建至少接受一个小写和一个数字的正则表达式?,javascript,regex,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(expresio
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');
}
将该组件用于每个条件:
/^(?=[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.{2,8}$)(.*)/m
(如注释中所述,在其他条件下,您的目标模式至少为3个字符…使用该组合到每个条件:
/^(?=[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.{2,8}$)(.*)/m
(如注释中所述,在其他条件下,您的目标模式至少为3个字符…这应该符合您的文字要求(但是,正如注释所述,它们实际上没有意义): 首先,您需要使用
^
(字符串开头)和$
来锚定匹配;否则,您可能只是选择了一个匹配的子字符串,这将打乱您的需求
其次,我们使用lookahead来验证几个单独的点:字符串在结束前包含2到8个字符,字符串包含一个数字
第三,我们使用字符类来验证它是否以大写开头,并继续以大写、小写和数字的组合开头
编辑:忘记了小写的要求,谢谢。你是对的,你的版本更好。这应该符合你的文字要求(然而,正如评论所说,它们没有真正的意义): 首先,您需要使用
^
(字符串开头)和$
来锚定匹配;否则,您可能只是选择了一个匹配的子字符串,这将打乱您的需求
其次,我们使用lookahead来验证几个单独的点:字符串在结束前包含2到8个字符,字符串包含一个数字
第三,我们使用字符类来验证它是否以大写开头,并继续以大写、小写和数字的组合开头
编辑:忘记了小写的要求,谢谢。您是对的,您的版本更好。标签上可能有重复的Per规则,请同时标记。在一个无关的评论中,如果这是一个真实的密码验证情况,请不要-这会降低密码的安全性。我不认为这是密码验证。这看起来更像标识符命名约定(尽管通常也允许下划线)。给定第2项和第3项,总共至少3个字符:1,以大写开头,2包含小写和数字,即至少3个字符。对于允许的2个字符,您如何满足以大写字母开头并同时包含小写和数字的要求?标签上的每个规则可能重复,请同时标记。在一个无关的评论中,如果这是一个真实的密码验证情况,请不要-这会降低密码的安全性。我不认为这是密码验证。这看起来更像标识符命名约定(尽管通常也允许下划线)。给定第2项和第3项,总共至少3个字符:1,以大写开头,2包含小写和数字,即至少3个字符。对于允许的2个字符,如何满足以大写开头并同时包含小写和数字的要求?仍然将匹配更大的字符串,因为您不会以长度先行终止。例如,使用
“Qwertyuiopasdfghjklzxcvbnm9”
进行测试。啊!修正!;-)仍然将匹配一个更大的字符串,因为您不会在前面的长度中终止。例如,使用“Qwertyuiopasdfghjklzxcvbnm9”
进行测试。啊!修正!;-)此正则表达式接受类似于“A123”
的字符串,不包含小写字母。另外,长度的前瞻性不是比仅仅在末尾加上{1,7}
更复杂、效率更低吗:^(?=.[0-9])(?=.[a-z])[a-z][a-zA-Z0-9]{1,7}$
?这个正则表达式接受类似“A123”
的字符串,没有小写字母。另外,对长度的前瞻不是比仅仅在末尾加上{1,7}
更复杂、效率更低吗:^(?=.[0-9])(?=.[a-z])[a-z][a-zA-Z0-9]{1,7}$
?