你能帮我正则表达吗?我需要2个,一个用于用户名,一个用于密码:
用户名一:
密码一:
谢谢你的帮助。
答案 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:]])。