html输入正则表达式模式不起作用

时间:2015-05-27 10:22:26

标签: html regex

我有以下代码:

<body>
    <form action="" method="post">
        <div>
            <label>First Name: <input type="text" name="firstname" value=" " pattern="[a-zA-Z ]+"></input> </label>
        </div>
        <div>
            <label>Last Name: <input type="text" name="lastname" value="" pattern="[a-zA-Z ]+"> </input> </label>
        </div>
        <div>
            <label>Voucher: <input type="text" name="voucher" value="" pattern="^[0-9]{5}+[-]+[0-9]{5}+[-]+[A-Z]{2}*"></input> </label>
        </div>
        <input type="submit" value="Submit"></input>
    </form>
</body>

上面的代码是我的代码,名字和姓氏都在工作,问题是凭证输入没有检查我想要的模式,它应该看起来像“12345-67890-AB”。

2 个答案:

答案 0 :(得分:3)

删除+和最终*并在结尾添加$

^[0-9]{5}[-][0-9]{5}[-][A-Z]{2}$

或者自pattern attribute does not require anchoring以来,您也可以使用

[0-9]{5}[-][0-9]{5}[-][A-Z]{2}

请参阅demo

说明:

  • ^ - 字符串的开头(自pattern字符串锚定以来没有必要)
  • [0-9]{5} - 正好5位数
  • [-] - 正好1个连字符
  • [0-9]{5} - 正好5位数
  • [-] - 正好1个连字符
  • [A-Z]{2} - 正好2个大写英文字母。
  • $ - 字符串结束(再次,因为模式被锚定,可以省略)。

答案 1 :(得分:2)

试试这个

^[0-9]{5}[-]+[0-9]{5}[-]+[A-Z]{2}

http://regexr.com/3b338