首页 > 解决方案 > 英国公司注册号的输入掩码

问题描述

英格兰和威尔士的英国公司注册号由 8 个整数组成。对于苏格兰,它是“SC”后跟 6 个整数,而对于北爱尔兰,它是“NI”,后跟 6 个整数。输入掩码的文档很全面,请参阅http://github.com/RobinHerbots/jquery.inputmask。最简单的解决方案是;

$("input.CompanyFormat").inputmask("**999999",  "placeholder": "", "casing": "upper" });

但这不是最好的解决方案。用户只能输入“SC”、“NI”或 2 位数字后跟 6 位数字。

标签: regexjquery-inputmask

解决方案


所有输入掩码共有的正则表达式方法存在一个问题:单个字符输入完全不知道上下文。您只能为单个 char 输入定义特殊模式,例如,如果您希望第一个 char 是S,您可以在内部定义它definitions,但它不会知道它之后会发生什么或它之前会发生什么。

因此,您不能为通配符定义多字符模式,并且必须使用附加的验证机制以及掩码。

例如,您可以使用输入 HTML5pattern验证来告诉用户该模式无效:

<input type="text" pattern="(SC|NI|[0-9]{2})[0-9]{6}" title="Wrong input!">

请参阅 HTML5 演示:

<form name="form1"> 
 <input pattern="(SC|NI|[0-9]{2})[0-9]{6}" title="Wrong input!" />
 <input type="Submit"/> 
</form>

pattern="(SC|NI|[0-9]{2})[0-9]{6}"它将编译为/^(?:(SC|NI|[0-9]{2})[0-9]{6})$/, 在 FF 和 Chrome 中带有u修饰符)将匹配任何匹配的输入

  • ^- 字符串开头(隐式)
  • (SC|NI|[0-9]{2})-SCNI2 位数字
  • [0-9]{6}- 6 位数
  • $- 字符串结尾(隐式)。

推荐阅读