用户名正则表达式量词(长度) - 无法使其正常工作

时间:2014-03-15 18:25:59

标签: javascript regex validation username

我正在尝试按以下规则验证用户名:

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)如果在一个数字之后我写了一封信,然后写了[_-。]之一 - 它没有验证

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

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

使用正向前瞻((?=[^_.-]*[_.-]?[^_.-]*$)),检查字符串中是否有[_-.]的最大值。