我正在尝试按以下规则验证用户名:
1 - 字符串的总长度必须介于5到12个字符之间
2 - 它必须以至少一个字母字符[a-zA-Z]
开头3 - 之后,它可以包含任何字母数字字符和最大的一个:[_ - 。]
4 - 它不能以下列之一结束:[_-。],它只能以至少一个字母数字结尾 字符
这是我正在处理的正则表达式: ^(([A-ZA-Z] +)([A-ZA-Z0-9] + [-._] ??)+([A-ZA-Z0-9])){5,12} $
以下是问题:
a)它只验证字符串是否长度至少为15个字符(即使我有{5,12}
b)它不验证字符串是否包含[_-。]之一作为第二个字符
c)像“aaa-a-aaaaaaaaaa”这样的字符串验证即使它有多个[ - 。] 实际上,字符串中的字母数字越多,[ - 。]的重复次数就越多(至少如果它们彼此相邻就会尖叫)
d)如果在一个数字之后我写了一封信,然后写了[_-。]之一 - 它没有验证
有人可以帮忙吗?
答案 0 :(得分:0)
试试这个:
^[a-zA-Z](?=[^_.-]*[_.-]?[^_.-]*$)[\w.-]{3,10}[a-zA-Z0-9]$
使用正向前瞻((?=[^_.-]*[_.-]?[^_.-]*$)
),检查字符串中是否有[_-.]
的最大值。