【问题标题】:Can I use regexes containing ampersands in HTML5 pattern attributes?我可以在 HTML5 模式属性中使用包含与号的正则表达式吗?
【发布时间】:2012-10-11 09:36:09
【问题描述】:

在 HTML5 网络应用程序中提交表单之前,我使用以下电子邮件验证:

<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;.)

是否有可能在不弄乱正则表达式的情况下转义 & 符号?在这种情况下验证者是否正确?

【问题讨论】:

    标签: regex html escaping pattern-matching ampersand


    【解决方案1】:

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

    请看这里:http://regex101.com/r/bF4bZ3

    换句话说,[....$%&amp;'*....] 将变为 [....$%\x26'*....]。对其余部分执行相同操作。

    【讨论】:

    • 这是一个很好的建议!谢谢你。不过仍然非常好奇,想知道这是否是您应该这样做的方式,以及这是否是来自 W3 验证器的误报。
    猜你喜欢
    • 2012-03-13
    • 2012-12-11
    • 2010-09-29
    • 1970-01-01
    • 2012-01-24
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    相关资源
    最近更新 更多