regex - 英国公司注册号的输入掩码
问题描述
英格兰和威尔士的英国公司注册号由 8 个整数组成。对于苏格兰,它是“SC”后跟 6 个整数,而对于北爱尔兰,它是“NI”,后跟 6 个整数。输入掩码的文档很全面,请参阅http://github.com/RobinHerbots/jquery.inputmask。最简单的解决方案是;
$("input.CompanyFormat").inputmask("**999999", "placeholder": "", "casing": "upper" });
但这不是最好的解决方案。用户只能输入“SC”、“NI”或 2 位数字后跟 6 位数字。
解决方案
所有输入掩码共有的正则表达式方法存在一个问题:单个字符输入完全不知道上下文。您只能为单个 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})
-SC
或NI
2 位数字[0-9]{6}
- 6 位数$
- 字符串结尾(隐式)。
推荐阅读
- javascript - 如何将变量用作对象内的索引?(Javascript)
- java - ContextThemeWrapper 更改 android 中的样式
- snowflake-cloud-data-platform - 从雪花的另一个表中添加列
- html - 如何链接到谷歌照片中的图像但下载文件而不是打开它
- python - Python [Errno 8] 执行格式错误:'/app/.venv/bin/python'
- arrays - 对最近索引 numpy 数组的操作
- c - N 个数的最大值和最小值,使用 do-while
- r - 从 Google Datastudio 报告中读取数据
- android - 如何使用协程连续执行操作?
- python - 正则表达式:仅当它们超过一个单词时,在斜线后删除字符串