所以,这是我的代码:
<p>A form with a password field that must contain 8 or more characters that are of at least one number, and one uppercase and lowercase letter:</p>
<form action="">
Password: <input type="text" name="pw" pattern="[A-Za-z0-9._%+'-\]+@[a-z0-9.-]+\.[a-z]{2,4}$" required title="Must contain at least one number and one uppercase and lowercase letter, and at least 8 or more characters">
<input type="submit">
</form>
<p><strong>Note:</strong> The pattern attribute of the input tag is not supported in Internet Explorer 9 and earlier versions.</p>
为什么允许
我在@
上加了一个加号,以便在此之前有一个或多个字符。但这似乎不起作用
答案 0 :(得分:2)
您的模式有问题,正在转义第一个]
字符:
"[A-Za-z0-9._%+'-\]+@[a-z0-9.-]+\.[a-z]{2,4}$"
^
here
使用另一个\
:\
转义"[A-Za-z0-9._%+'-\\]+@[a-z0-9.-]+\.[a-z]{2,4}$"
,它应该可以工作
ps:您说您不能使用type="email"
,但您可以看到其中的documentation,其中使用了正则表达式
答案 1 :(得分:1)
此问题是由于[A-Za-z0-9._%+'-\]+@[a-z0-9.-]
是等于[A-Za-z0-9._%'\][+@.-]
的单个字符类而导致的,因为您过早地以]
字符类结尾的[A-Za-z0-9._%+'-]
字符结束了。 / p>
请注意,通常只需使用type="email"
来检查输入的字符串是否为电子邮件。但是,由于使用type="text"
有一些限制,因此可以使用
pattern="[\w.%+'-]+@[a-z0-9.-]+\.[a-z]{2,4}"
\
之前不能有]
,并且您可以放心地删除$
,仅检查一次字符串的结尾(由HTML5自动完成)。
最终样式HTML5引擎将应用于输入,看起来像^(?:[\w.%+'-]+@[a-z0-9.-]+\.[a-z]{2,4})$
:
^(?:
-字符串的开头和未捕获的组[\w.%+'-]+
-1个或多个字母,数字,_
,.
,%
,+
,'
或{{1} } -
-一个@
@
-1或molre小写ASCII字母,数字,[a-z0-9.-]+
或.
-
-一个点\.
-2、3或4个小写ASCII字母[a-z]{2,4}
-组和字符串的结尾。