加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式匹配用户名

发布时间:2020-12-13 21:53:08 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个正则表达式来验证应与以下内容匹配的用户名: 只允许一个特殊字符(._-),它不能位于字符串的极值 第一个字符不能是数字 允许的所有其他字符都是字母和数字 总长度应在3到20个字符之间 这是针对HTML5验证模式的,遗憾的是它必须是一个很大的
我正在尝试创建一个正则表达式来验证应与以下内容匹配的用户名:

>只允许一个特殊字符(._-),它不能位于字符串的极值
>第一个字符不能是数字
>允许的所有其他字符都是字母和数字
>总长度应在3到20个字符之间

这是针对HTML5验证模式的,遗憾的是它必须是一个很大的正则表达式.

到目前为止,这就是我所拥有的:

^(?=(?![0-9])[A-Za-z0-9]+[._-]?[A-Za-z0-9]+).{3,20}

但积极的前瞻可以重复多次,允许不止一个特殊角色,这不是我想要的.我不知道如何纠正这一点.

您应该将正则表达式分成两部分(而不是两个表达式!),以使您的生活更轻松:

首先,匹配用户名需要的格式:
^ [a-zA-Z] [a-zA-Z0-9] * [._-]?[a-zA-Z0-9] $

现在,我们只需要验证长度约束.为了不与已经找到的模式混淆,你可以使用一个非消费匹配,它只验证字符的数量(它通常是用于为你的正则表达式创建和模式的hack):(?= ^.{3 20} $)

如果长度约束匹配,正则表达式将仅尝试匹配有效格式.它是非消耗的,因此在成功之后,引擎仍处于字符串的开头.

所以,所有在一起:

(?=^.{3,20}$)^[a-zA-Z][a-zA-Z0-9]*[._-]?[a-zA-Z0-9]+$

Debuggex Demo

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读