我正在寻找一个正则表达式匹配字符串(即密码),至少有8个字符,至少一个大写字符,至少一个小写字符和至少一个数字。
(在此处的帮助下)有效的正则表达式是:
(^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,}$)
此正则表达式使用正前瞻(?=
)。这是一个昂贵的操作。是否有可能在不使用正前瞻的情况下制作此正则表达式?
至少8个字符、至少一个大写字符、至少一个小写字符和至少一个数字
这有点像一个谜
好吧,我将把这当作一个谜题,前提是:
而且这个解决方案可能比使用前瞻更昂贵。
>
\A(?:[A-Z]|[a-z]|[0-9]|.){8,}
检查主题中至少有8个字符,同时提供4个选项(大写、小写、数字或其他字符)。
然后,我们将为前3个必需选项创建一个反向参考:
\A(?:(?<upper>[A-Z])|(?<lower>[a-z])|(?<digit>[0-9])|.){8,}
最后,我们将使用IF子句检查每个组是否被捕获:
(?(upper) (?#check 2nd condition) | (?#make it fail) )
使用(?!)
如果不满足任何条件,则使其失败:
(?(upper)(?(lower)(?(digit)|(?!))|(?!))|(?!))
\A #beggining of string
(?> #MAIN iteration (atomic only for efficiency)
(?<upper>[A-Z]) # an uppercase letter
| # or
(?<lower>[a-z]) # a lowercase letter
| # or
(?<digit>[0-9]) # a digit
| # or
. # anything else
){8,}? #REPEATED 8+ times
#
#CONDITIONS:
(?(upper) # 1. There must be at least 1 uppercase
(?(lower) # 2. If (1), there must be 1 lowercase
(?(digit) # 3. If (2), there must be 1 digit
| (?!) # Else fail
) #
| (?!) # Else fail
) #
| (?!) # Else fail
) #
一行:
\A(?>(?<upper>[A-Z])|(?<lower>[a-z])|(?<digit>[0-9])|.){8,}?(?(upper)(?(lower)(?(digit)|(?!))|(?!))|(?!))
regex101演示
我需要一个正则表达式来检查: 密码至少包含八个字符,其中至少包含一个数字,并且包含大小写字母和特殊字符,例如、、。 它不能是您的旧密码,也不能包含您的用户名、或 这里是我的验证表达式,它针对八个字符,包括一个大写字母,一个小写字母,和一个数字或特殊字符。 密码必须是八个字符,包括一个大写字母,一个特殊字符和字母数字字符,我怎么写呢?
我的输入字段的密码验证要求如下:“密码应至少包含一个大写字母、一个小写字母、一个数字或特殊字符”。 这是1个大写、1个小写、1个数字和一个特殊字符的正则表达式
谁能帮我用一个正则表达式来允许至少一个特殊字符,一个大写字母,一个小写字母。 这是我到目前为止所拥有的: 但它似乎只按“特殊字符”、“大写”、“小写”的顺序匹配字符。 非常感谢您的帮助
我试图编写一个正则表达式来验证密码,它必须满足以下条件: 至少包含8个字符 我尝试了以下方法,但似乎不起作用。 http://jsfiddle.net/many_tentacles/Hzuc9/ 和 有什么想法吗?
要匹配至少包含一个字母或数字的字符串,JavaScript正则表达式是什么?这至少需要一个字母数字字符(至少一个字母或至少一个数字)。
我试图使用正则表达式来检查字符串中的第一个和最后一个字符是否是a-z之间的字母字符。 我知道这与第一个字符匹配: 但是我如何检查最后一个字符呢? 这: 不起作用。我怀疑这两个条款之间应该有什么区别,但我不知道是什么!