-2

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

用户名一:

  1. 必须为 8-15 个字符且必须以字母开头
  2. 不得包含特殊字符 - 仅包含字母和数字

密码一:

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

谢谢你的帮助。

4

4 回答 4

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
于 2013-06-06T15:26:55.633 回答
0

这是 Perl 正则表达式语法。

对于用户名:

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

对于密码,如果可以拆分成几个正则表达式,那就更简单了:

检查长度和字符集:

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

检查至少一个小写字母:

/[a-z]/

检查至少一个号码:

/[0-9]/
于 2013-06-06T15:22:18.493 回答
0

无法使用标准正则表达式检查字符串长度,因为它超出了标准正则表达式的表达能力。尽管它可能会作为扩展添加到某些正则表达式引擎中。

用户名:

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

密码:

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

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

于 2013-06-06T15:27:27.157 回答
0

用户名:

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

密码:

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

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

注意:不确定您使用的是哪种正则表达式,所以我不确定如何匹配空格(例如,在awk中您可以使用 [[:space:]])。

于 2013-06-06T15:28:03.470 回答