双preg匹配登录验证

时间:2013-04-21 22:16:12

标签: php regex preg-match

我想验证一个用户名登录 - 它只接受字母,数字和非核心,最多20个标志,这是我的正则表达式:

正则表达式:^[\w_]{4,20}$ working example at Rubular

它应该接受此登录:

login
login_login
_login
_87login
837420
login898

但是当登录只包含下划线时,它应该返回false:

 ________

如何在一个preg中执行此操作?多数民众赞成我的问题:)

2 个答案:

答案 0 :(得分:0)

/^(_?[a-z0-9-])+$/i

这接受由字母,数字,连字符和下划线组成的字符串,但不允许__。另请注意,这不会检查长度,您必须使用strlen()执行此操作。它也不允许使用尾随下划线,但是您的规范并未声明这是有效的。

答案 1 :(得分:0)

如果您只想检查至少有一个字母/数字,请使用lookahead

^(?=.*?[a-zA-Z0-9])\w{4,20}$