Javascript正则表达式模式

Spi*_*idy 1 javascript regex

我正在尝试创建一个正则表达式模式,允许用户创建具有以下规范的用户名.(就这个初始模式而言,我只使用标准的美式英语字母表.

第一个字符必须是字母(大写或小写).[a-zA-Z]最后一个字符必须是字母数字(大写或小写).[a-zA-Z0-9]中间的任何字符必须是带有一个规则的字母或数字:

用户可以使用句点(.),短划线( - )或下划线(_),但必须后跟字母数字字符.因此,不能一次重复这些字符中的一个或多个.

我尝试了以下正则表达式模式,但没有得到我希望的结果.感谢您抽出宝贵时间帮助我.

^[a-zA-Z]([a-zA-Z0-9]+[._-]?[a-zA-Z0-9]+)+$
Run Code Online (Sandbox Code Playgroud)

编辑

它实际上可能按我预期的方式工作.但是我总是把两场比赛送回给我.第一个是整个有效字符串,第二个是第一个字符串的缩短版本,通常会删除前几个字符.

有效输入的示例:

  • Spidy
  • Spidy.Man
  • AMA-ZA-zing_Spidy

无效输入的示例:

  • Extreme_ _ _Spidy(重复下划线)
  • _-_ Spidy(重复的特殊字符)
  • _ _ SPIDY _ _(以特殊字符开头和结尾)

Ker*_* SB 5

听起来像这样的模式:

^[a-zA-Z]([._-]?[a-zA-Z0-9])*$
Run Code Online (Sandbox Code Playgroud)