1
我有一个可选的表单字段,我想使用新的html5模式选项。 但是,当我添加模式时,即使我没有必需的属性,字段也是必需的。我已经包含了下面的模式。我希望用户能够将字段留空,但如果用户在字段中输入了某些内容,那么我希望应用该模式。我怎么做到这一点?提前致谢。html5表单验证 - 在可选字段上使用模式
pattern="[-a-zA-Z '.,]{3,50}"
我有一个可选的表单字段,我想使用新的html5模式选项。 但是,当我添加模式时,即使我没有必需的属性,字段也是必需的。我已经包含了下面的模式。我希望用户能够将字段留空,但如果用户在字段中输入了某些内容,那么我希望应用该模式。我怎么做到这一点?提前致谢。html5表单验证 - 在可选字段上使用模式
pattern="[-a-zA-Z '.,]{3,50}"
的问题是,{3,50}
限制性量词至少需要3次出现在字符类中定义的字符的。
您需要使模式可选。与可选的非捕获组包裹它:
pattern="(?:[-a-zA-Z '.,]{3,50})?"
^^^ ^^
HTML5 patterns自动卷绕有锚固件,即,图案上方将被翻译成^(?:(?:[-a-zA-Z '.,]{3,50})?)$
和将匹配
^(?:
- 字符串(?:[-a-zA-Z '.,]{3,50})?
- 发生1或0次3至50个连字符,ASCII字母,空格,'
,.
或,
)$
- 字符串结尾。
令人惊叹。谢谢。你是HTML5天才。我通过删除前面的“:”来简化它。而我在上面的模式中没有看到字符串的结尾。简化版本工作。是否有一个原因,我需要一个字符串的开始和字符串的结尾? –
@XiVix:查看[文档](https://www.w3.org/TR/html5/single-page.html#the-pattern-attribute)。你在'pattern'属性*中使用的模式必须匹配整个字符串,因此前导/尾随位置中的'^'和'$'不是必需的。这就是为什么我没有把它们纳入模式。 –