0

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

重要的是要在这里提到,基于这个问题,我能够使用以下正则表达式成功地为“名称”字段实现服务器端验证(不需要客户端验证):

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

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

  • 有效字符包括:小写和大写字母(仅限拉丁语)、数字、破折号、下划线和圆点
  • 必须以字母或数字开头和结尾
  • 行中的特殊字符(短划线、下划线或圆点)不得超过一个
  • “URL ID”中可以有多个特殊字符

作为有效和无效的示例,以下是一些示例:

有效输入

  • 我的用户名
  • 我的用户名12
  • my.user20_name
  • 8-用户名-我的

输入无效

  • 我的用户名。
  • _myusername10
  • 我的..用户名
  • myuser-.name

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

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

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

4

1 回答 1

2

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

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

http://regexr.com?36f5b

于 2013-09-24T17:00:26.070 回答