用Regex验证用户名

时间:2013-09-20 08:34:57

标签: javascript regex

我有一个注册表单,用户可以在其中输入公司名称和公司的URL ID。现在,我想向用户建议“URL ID”,因此当他键入“name”时,“URL ID”应基于此输入(非常类似于Facebook“name”和“username”范例)。我还要提一下,用户可以在建议后手动输入“URL ID”进行更正。

这里要提到的是,基于this question,我能够使用以下Regex表达式成功实现“name”字段的服务器端验证(不需要客户端验证):

/^[\p{L}\p{N}]+(?:[- \'\x26][\p{L}\p{N}]+| [\x26] [\p{L}\p{N}]+)*$/iu

必须对URL ID应用某些规则:

  • 有效字符包括:小写和大写字母(仅限拉丁字母),数字,短划线,下划线和点
  • 必须以字母或数字开头和结尾
  • 行中不得有多个特殊字符(短划线,下划线或点)
  • “网址ID”
  • 中可以包含多个特殊字符

作为一个有效和不可用的例子,这里有一些例子:

有效输入

  • 名为myUsername
  • my.username12
  • my.user20_name
  • 8的用户名,我

输入无效

  • myuser20name。
  • _myusername10
  • my..username
  • myuser-.name

长话短说,有两件事需要做:

  • 当用户输入/粘贴“名称”字段时,我需要即时接收输入,只保留允许的字符丢弃其余字符,并使用过滤后的输入填写“URL ID”字段
  • 当用户输入/粘贴“URL ID”字段时,我需要输入以验证上述规则,以便例如输入“my.user-”就可以了(尽管它会使服务器失败 - 由于“ - ”是最后一个字符而进行的边验证,但是不允许输入附加的“ - ”

我想我只需要有效的Regex表达式,我可以自己编写其余的代码。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我不知道我是否理解所有规则,但根据他的例子,这个正则表达式确切地证实了你的需要!

^[a-zA-Z0-9]+([-_\.][a-zA-Z0-9]+)*[a-zA-Z0-9]$

http://regexr.com?36f5b