HTML pattern 属性

HTML pattern 语法

在 HTML 中,pattern 属性用于在表单中为输入框添加一个正则表达式验证规则,以确保用户输入的数据符合特定格式。

只有文本框型的 input 元素支持 pattern 属性,例如:

  • <input type="text">。
  • <input type="search">。
  • <input type="url">。
  • <input type="tel">。
  • <input type="email">。
  • <input type="password">。
  • <input type="number">(虽然自身已有数字限制,但可以用 pattern 实现更精细的格式控制,例如必须是 5 位数字 )。

语法:

<input type="text" pattern="正则表达式">

说明:

pattern 属性的值是一个正则表达式。当用户提交表单时,如果输入字段的值不符合这个正则表达式,浏览器就会阻止表单提交,并显示一个错误提示。

注意: pattern 不会限制用户在输入时的行为,也就是说,用户可以随意输入内容,但在提交前必须满足验证规则。

HTML pattern 摘要

适用元素 input
使用频率
兼容性 查看
官方文档 查看
MDN 查看

HTML pattern 示例

接下来,我们通过几个简单的例子来讲解一下 HTML pattern 属性是如何使用的。

示例 1:pattern 属性验证 “用户昵称”

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        input:invalid {
            border: 1px solid red;
        }
        input:valid {
            border: 1px solid green;
        }
    </style>
</head>
<body>
    <form action="/register" method="post">
        <p>
            <label>
                昵称:
                <input type="text" name="nickname" pattern="^[a-zA-Z][a-zA-Z0-9_]{4,9}$" title="昵称必须以字母开头,长度为5-10个字符(字母、数字或下划线)。" required>
            </label>
        </p>
        <p>
            <button type="submit">注册</button>
        </p>
    </form>
</body>
</html>

页面效果如下图所示。

HTML pattern属性示例1

分析:

在这个例子中,我们使用 pattern 属性为 input 元素定义了一个正则表达式。当我们尝试提交表单时,如果昵称不符合该正则表达式,那么浏览器会显示一个错误提示,并阻止表单提交。

此外,input: invalid 和 input: valid 这两个伪类用于提供视觉反馈,红色边框表示不符合规则,绿色边框表示符合规则。

提示: HTML5 的 pattern 属性默认会匹配整个字符串,因此 “^” and “$” 并不是必须的。不过为了正则表达式的严谨性和可移植性,建议加上它们。

示例 2:pattern 属性验证 “手机号码”

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <form action="/contact" method="post">
        <p>
            <label>
                手机号码:
                <input type="tel" name="phone_number" pattern="^1[3-9]\d{9}$" title="请输入11位有效的中国大陆手机号码。" required>
            </label>
        </p>
        <p>
            <button type="submit">提交</button>
        </p>
    </form>
</body>
</html>

页面效果如下图所示。

HTML pattern属性示例2

分析:

对于这个例子来说,只有当输入的手机号码符合 “^1[3-9]\d{9}$” 这个正则表达式(以 1 开头、第二位是 3-9、后面跟着 9 位数字)时,表单才能提交。

示例 3:pattern 属性验证 “邮政编码”

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <form action="/address" method="post">
        <p>
            <label>
                邮政编码:
                <input type="text" name="postal_code" pattern="^\d{6}$" title="请输入6位数字的邮政编码。" required>
            </label>
        </p>
        <p>
            <button type="submit">提交</button>
        </p>
    </form>
</body>
</html>

页面效果如下图所示。

HTML pattern属性示例3

分析:

pattern="^\d{6}$" 表示强制要求输入正好 6 位数字。只有当输入符合该模式时,表单才能提交。

上一篇: for

下一篇: placeholder

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号