我需要一个带条件的正则表达式:
目前我有模式: (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,50})$
但是它不允许特殊字符,是否有人有一个很好的正则表达式呢?
谢谢
我是学习正则表达式的新手,并且遇到了这个答案,该答案使用正向前行验证密码。
正则表达式为- (/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,}$/)
用户提供的细分为-
(/^
(?=.*\d) //should contain at least one digit
(?=.*[a-z]) //should contain at least one lower case
(?=.*[A-Z]) //should contain at least one upper case
[a-zA-Z0-9]{8,} //should contain at least 8 from the mentioned characters
$/)
Run Code Online (Sandbox Code Playgroud)
但是,我不清楚将多个前瞻链接在一起。从我所学到的内容中,正面前瞻检查表达式是否跟随在前瞻中指定的内容。例如,这个答案说-
正则表达式
is(?= all)
与字母匹配is
,但前提是字母后紧跟字母all
那么,我的问题是个人前瞻如何工作?如果我把它分解-
^(?=.*\d)
。这是否表明在字符串的开头查找零个或多个出现的任何字符,后跟1位数字(从而检查1位数字的存在)?(?=.*[a-z])
,是否检查了字符串开头的第1步后,是否发现零个或多个出现的任何字符,后跟一个小写字母?还是两个前瞻完全不相关?( )
每个前瞻周围有什么用?是否创建捕获组?我也看过有关Rexegg的文章,但并没有太大帮助。
将不胜感激。
所以在我的注册表格中我有这个字段:
<div class="form-group">
<label for="RegisterModel_Password">Password</label>
<input type="password" id="RegisterModel_Password"
name="RegisterModel.Password" class="form-control"
required="required" minlength="8"/>
</div>
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在使用jQuery验证属性来确保密码至少包含8个字符.所以,我想检查密码是否包含大写和数字,如果没有,则字段无效.我下载了名为" pattern "的jQuery Validation插件的附加方法,并将她添加到head标签中.
我尝试按照以下方式执行此操作,但它没有奏效.
$("#formRegister").validate({
rules: {
RegisterModel_Password: {
pattern: /^[a-zA-Z][0-9]/
}
}
});
Run Code Online (Sandbox Code Playgroud)
我认为模式是错误的,但我不确定使用是否正确.谢谢您的帮助.
我正在尝试为密码创建正则表达式验证,该验证应为:
因此,换句话说,匹配将具有:
我想出了:
((.*){3,}[a-z]{1,}[A-Z]{1,}[0-9]{1,})
Run Code Online (Sandbox Code Playgroud)
对我来说,这似乎很简单且合乎逻辑,但是有两件事出错了:
{3,}
以(.*)
某种方式不起作用并破坏了整个正则表达式。刚开始时我遇到{6,}
了,但是正则表达式会影响内部组中的量词,因此它需要[A-Z]{6,}
而不是[A-Z]{1,}
{3,}
正则表达式时,但仅在组顺序一致时才匹配-以便匹配aaBB11
,但不匹配BBaa11