我想验证一个用户名登录 - 它只接受字母,数字和非核心,最多20个标志,这是我的正则表达式:
正则表达式:^[\w_]{4,20}$
working example at Rubular
它应该接受此登录:
login
login_login
_login
_87login
837420
login898
但是当登录只包含下划线时,它应该返回false:
________
如何在一个preg中执行此操作?多数民众赞成我的问题:)
答案 0 :(得分:0)
/^(_?[a-z0-9-])+$/i
这接受由字母,数字,连字符和下划线组成的字符串,但不允许__
。另请注意,这不会检查长度,您必须使用strlen()
执行此操作。它也不允许使用尾随下划线,但是您的规范并未声明这是有效的。
答案 1 :(得分:0)
如果您只想检查至少有一个字母/数字,请使用lookahead:
^(?=.*?[a-zA-Z0-9])\w{4,20}$