我可以在HTML5模式属性中使用包含&符号的正则表达式吗?

时间:2012-10-21 09:56:22

标签: regex html5 escaping pattern-matching ampersand

在HTML5 webapp中提交表单之前,我使用以下电子邮件验证:

<input id="mail" name="mail" type="email" value="" required  placeholder="Email" 
pattern="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"> 

然而,正则表达式中的&符号似乎使HTML无效。在http://validator.w3.org/检查我收到以下错误消息:

& did not start a character reference. 
(& probably should have been escaped as &amp;.)

甚至可以在正则表达式中放出&符号而不会弄乱它吗?在这种情况下验证器是正确的吗?

1 个答案:

答案 0 :(得分:6)

例如,您可以使用十六进制值:\x26

见这里:http://regex101.com/r/bF4bZ3

换句话说,[....$%&'*....]将成为[....$%\x26'*....]。对其他人做同样的事。