我正在ESP8266控制器上处理一个C++项目并显示强制门户。 门户本身由外部库创建,在生成的门户页面方面存在一些限制。 我只能向代码创建的表单字段添加属性。 换句话说,我有一个在页面/门户上生成的输入字段,我可以使用pattern
、min
、max
等属性对其进行修改。
我想允许用户输入主机名,并保持它非常简单并与可能过时的技术兼容,我想强制主机名以字母字符开头,必须介于 3 到 24 个字符之间,可能包含字母数字字符和/或连字符,并且不得以连字符结尾。
显然,pattern
属性就是这里的东西。 问题是到目前为止,我未能提出一个很好的工作示例。 在下面的示例中,它强制执行开始 alpha,如果我输入某些内容,它至少强制执行 3 个字符,但如果我不输入任何内容,它就会接受它为有效。 我也没有完全弄清楚如何将最后一个字符限制为字母数字。
<input type="text" name="hostname"
pattern="^[a-zA-Z][a-zA-Z0-9-]{2,24}$"
title="Enter a hostname, 3-14 characters, beginning
with a letter and containing only alphanumeric
characters and/or a hyphen. It must end with an
alphanumeric."
>
因此,我想正常工作的一些测试是:
- A-B (良好(
- A12 (好(
- ab-(坏(
- AB(坏(
- 1ab(坏(
我有点难以置信,我的谷歌富在这里让我失望了。
如果不输入任何内容,则不会进行验证,因为输入未指定为必需,因此请添加required
属性。
此外,由于您希望字段包含 3-24 个字符,因此应{1,22}
第一个字符之后的重复项,并且应[a-zA-Zd]
最后一个标记以确保最后一个字符不是连字符:
^[a-zA-Z][a-zA-Zd-]{1,22}[a-zA-Zd]$
<form><input type="text" name="hostname" required pattern="^[a-zA-Z][a-zA-Zd-]{1,22}[a-zA-Zd]$" title="Enter a hostname, 3-14 characters, beginning
with a letter and containing only alphanumeric
characters and/or a hyphen. It must end with an
alphanumeric.">
<button>click</button>
</form>