你能帮我用正则表达式吗?我需要 2 个,一个用于用户名,一个用于密码:
用户名一:
- 必须为 8-15 个字符且必须以字母开头
- 不得包含特殊字符 - 仅包含字母和数字
密码一:
- 长度必须为 5-20 个字符
- 必须至少包含一个小写字母 (abcdefghijklmnopqrstuvwxyz)
- 必须包含至少一个数字 (0123456789)
- 不得包含冒号 (:);和号 (&);一段时间 (。); 波浪号(~);或空间。
谢谢你的帮助。
你能帮我用正则表达式吗?我需要 2 个,一个用于用户名,一个用于密码:
用户名一:
密码一:
谢谢你的帮助。
你可以试试这个:
username: /^[a-z][^\W_]{7,14}$/i
password: /^(?=[^a-z]*[a-z])(?=\D*\d)[^:&.~\s]{5,20}$/
解释:
用户名:
[a-z] the first letter
[^\W_] equivalent to [a-zA-Z0-9]
密码:
(?=..) is a lookahead that don't consume characters but only check
(?=[^a-z]*[a-z]) check if there is at least 1 lower case letter
(?=\D*\d) check if there is at least 1 digit
[^:&.~\s] a character class that exclude all the characters you don't want
这是 Perl 正则表达式语法。
对于用户名:
/^[A-z][A-z0-9]{7,14}$/
对于密码,如果可以拆分成几个正则表达式,那就更简单了:
检查长度和字符集:
/^[^;&.~[:space:]]{5,20}$/
检查至少一个小写字母:
/[a-z]/
检查至少一个号码:
/[0-9]/
无法使用标准正则表达式检查字符串长度,因为它超出了标准正则表达式的表达能力。尽管它可能会作为扩展添加到某些正则表达式引擎中。
用户名:
[a-zA-Z][a-zA-Z0-9]+
密码:
[^: \&\.\~]*[a-z0-9]+[^:\&\.\~]+
如果您的正则表达式引擎支持,您可以使用{N,M}
而不是+
像其他帖子建议的那样检查长度。
用户名:
[A-Za-z][A-Za-z0-9]{7,14}
密码:
[^:&\.~ ]{5,20} #checks wheter the length and the characters are right
您应该单独检查是否至少有一个小写字母和至少一个数字,这很容易做到!
注意:不确定您使用的是哪种正则表达式,所以我不确定如何匹配空格(例如,在awk中您可以使用 [[:space:]])。