用户名和密码的正则表达式

时间:2013-06-06 15:20:18

标签: regex

你能帮我正则表达吗?我需要2个,一个用于用户名,一个用于密码:

用户名一:

  1. 必须是8-15个字符,必须以字母开头
  2. 不得包含特殊字符 - 仅包含字母和数字
  3. 密码一:

    1. 长度必须为5-20个字符
    2. 必须至少包含一个小写字母(abcdefghijklmnopqrstuvwxyz)
    3. 必须至少包含一个数字(0123456789)
    4. 不得包含冒号(:); &符号(&);一段时间 (。);波浪号(〜);或空间。
    5. 谢谢你的帮助。

4 个答案:

答案 0 :(得分:1)

你可以试试这个:

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

答案 1 :(得分:0)

这是Perl正则表达式语法。

对于用户名:

/^[A-z][A-z0-9]{7,14}$/

对于密码,如果您可以将其拆分为几个正则表达式,则更容易:

检查长度和字符集:

/^[^;&.~[:space:]]{5,20}$/

检查至少一个小写字母:

/[a-z]/

检查至少一个号码:

/[0-9]/

答案 2 :(得分:0)

使用标准正则表达式无法检查字符串长度,因为它超出了标准正则表达式的表现力。虽然可以在某些正则表达式引擎中添加它作为扩展名。

用户名:

[a-zA-Z][a-zA-Z0-9]+

密码:

[^: \&\.\~]*[a-z0-9]+[^:\&\.\~]+

如果您的正则表达式引擎支持,则可以使用{N,M}代替+检查其他帖子建议的长度。

答案 3 :(得分:0)

用户名:

[A-Za-z][A-Za-z0-9]{7,14}

密码:

[^:&\.~ ]{5,20} #checks wheter the length and the characters are right

如果至少有一个小写字母和至少一个数字,你应该单独检查,这很容易做到!

N.B。 不确定你使用什么样的正则表达式所以我不确定如何匹配空格(例如 awk 你可以使用[[:space:]])。