微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式 – 正向前瞻字符必须只出现一次并且是可选的

^(?=.*[-_.]?)[a-z][a-z0-9-_.]{1,13}[a-z0-9]$

>必须以一封信开头.
>必须以字母或数字结尾.
>长度必须介于3到15个字符之间.
>可能只存在字母,数字和[-_.].
> [-_.]是可选的,但使用时只能在整个字符串中出现ONCE.

我在最后一个要点上遇到了麻烦.

尝试使用(?=.* [-_.]?)进行预测并确保每当使用[-_.]时,它应该只出现一次.但它似乎不起作用,因为当我使用像__- bc34或a.b_c-d这样的字符串测试时,它匹配,但它应该只允许像a_bc34这样的东西.

高级正则表达式不是我最强的,所以我很感激任何帮助!

解决方法

我做:

^(?=.{3,15}$)[a-z][a-z0-9]*[-_.]?[a-z0-9]+$

说明:

^               : start of string
(?=.{3,15}$)    : lookahead,assumes there is from 3 to 15 character
[a-z]           : a letter
[a-z0-9]*       : 0 or more alphanum
[-_.]?          : optional -,_ or .
[a-z0-9]+       : 1 or more alphanum
$              : end of string

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐