我有一个注册表单,用户可以在其中输入公司名称和公司 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-”就可以了(尽管它会导致服务器端验证失败) “-”是最后一个字符),但不允许输入额外的“-”
我想我只需要有效的正则表达式,我可以自己编写其余的代码。任何帮助,将不胜感激。