regex - HTML5 表单输入模式正则表达式的行为不符合预期

标签 regex html passwords

我使用 regex101 作为正确 javascript 正则表达式的基线。这是我的模式:

/^(?=.*[0-9])(?=.*[a-zA-Z]).{8,40}/g

我正在尝试创建一个 8-40 个字符之间的密码正则表达式,可以包含任何字符,但至少有一个数字和至少一个字母字符。

关于regex101 ,此模式按预期工作。 asdf1234 正确匹配。

但是,尝试在 html5 表单输入模式中使用此模式不会匹配相同的结果。

fiddle

我做错了什么?

最佳答案

不要在 HTML5 模式属性中使用正则表达式文字,它只接受字符串模式(模式中两端的 / 符号被视为文字斜杠)。

<form>
    <input type="text" pattern="^(?=.*[0-9])(?=.*[a-zA-Z]).{8,40}$" />
    <input type="submit" value="OK" />
</form>

请注意,此模式中的 ^$ 不是必需的,因为 HTML5 模式中的正则表达式默认是锚定的,但可以使用(这会更容易)使用 regex101 或类似服务进行调试)。

关于regex - HTML5 表单输入模式正则表达式的行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40497945/

相关文章:

java - 从字符串中提取所有表情符号的正则表达式是什么?

html - 选择 .class 中除 &lt;footer&gt; 中的所有 <p>

html - 无法在导航标签中给出宽度和高度

php - 字符串中最接近特定短语的数字

c# - 无法正则表达式替换

javascript - 用于验证具有多个字母数字模式的字符串的正则表达式

passwords - 解压脚本密码

html - 位置 :fixed doesnt work for background image in ICS (native browser)

python - 如何使用 Python 将文件压缩为受密码保护的存档

C# WinForms 智能密码文本框类