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

^(?=.*[-_.]?)[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

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...