【问题标题】:html pattern="[A-Za-z]{50}" is saying valid input is invalidhtml pattern="[A-Za-z]{50}" 表示有效输入无效
【发布时间】:2015-08-28 09:23:18
【问题描述】:

我有一个包含一些文本字段的页面,我想限制用户输入,所以我使用了 html5 模式属性,如下所示:

<input name="team_name" type="text" pattern="[A-Za-z]{50}" value="<?php echo $team_name;?>">

这应该允许我只输入字母 b/w Aa-Zz 作为名称,但是当我尝试输入 有效 名称时,它仍然告诉我匹配请求的格式。 我错过了什么?怎么老是提示我输入无效?

【问题讨论】:

  • 试试pattern="^[A-Za-z]{1,50}$"

标签: html regex input


【解决方案1】:

规则[A-Za-z]{50} 将使名称仅在包含精确的50 字母时才可接受。

[A-Za-z]{10,50}

这将使名称最少 10 个字符,最多 50 个字符。 根据您的要求更新表达式。

演示:

input:invalid {
  color: red;
}
<form>
  <input name="team_name" type="text" pattern="[A-Za-z]{10,50}" value="">
  <br />
  <input type="submit">
</form>

【讨论】:

  • 验证模式不需要开始和结束锚点。
【解决方案2】:

{50} 在正则表达式模式中表示正好 50 个字符。这不太可能是你想要的。

如果要将输入限制为最多 50 个字符,请使用 maxlength 属性。

<input name="team_name" type="text" pattern="[A-Za-z]+" maxlength="50">

【讨论】:

  • 在我将 pattern="[A-Za-z]" 作为表达式之前,这也不起作用
  • 我已经更新了答案:您需要指定您接受多个字符。
  • 我只是在做一些测试,它接受引号 ' 和 " 它不应该也能捕捉到它们吗?
  • 当我尝试它时它不接受它们。而且您似乎已经接受了另一个几乎具有相同模式的答案,所以我想没有问题?
  • 是的,我不知道它是什么,但它已排序 - 也想接受你的答案 - 但是是的 - 只能接受一个:/
【解决方案3】:

如下所示:

type="text" -> 文本验证发生。

pattern="[A-Za-z]{50}" -> 只有 Aa - Zz 字母有效,字符输入无效。并且字符串长度应该等于 50。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多