Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建至少接受一个小写和一个数字的正则表达式?_Javascript_Regex - Fatal编程技术网

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

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

此表达式必须遵守特定规则:

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');
    }
将该组件用于每个条件:

/^(?=[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}$