php - 什么是用于 HTML5 模式输入元素属性的安全 PCRE 正则表达式定界符?

标签 php regex html pcre

似乎是 HTML5 spec (and therefore ECMA262)允许 <input type="text" pattern="[0-9]/[0-9]" />匹配字符串 '0/0' 即使正斜杠没有被转义。像 Drupal 这样的 Web 应用程序希望为不支持 HTML5 的浏览器提供服务器端验证,例如:

<?php
preg_match('/^(' . $pattern . ')$/', $value);
?>

不幸的是,字符串“[0-9]/[0-9]”不是有效的 PRCE 正则表达式。似乎大多数(如果不是全部)支持 HTML5 的浏览器同时支持 pattern="[0-9]/[0-9]" pattern="[0-9]\/[0-9]"这就引出了一个问题——我们可以使用什么作为分隔符来针对 Perl 样式的正则表达式运行此模式?

我们已经提交了 bug report against the W3C spec但是这里的浏览器错了吗?是否需要澄清 HTML5 规范?有没有我们可以在 PHP 中使用的解决方法?

最佳答案

如果您使用 # 而不是 / 作为分隔符,它就是一个有效的正则表达式。示例:

preg_match('#^('.$pattern.')$#', $value);

关于php - 什么是用于 HTML5 模式输入元素属性的安全 PCRE 正则表达式定界符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9526814/

相关文章:

php - 在后台使用xpath获取数据

php - 如何为每个唯一的数据库条目创建一个类别? (MySQL/PHP)

javascript - 使用 jquery 替换部分 href

javascript - 复杂的正则表达式模式

java - 速度优化java字符串包含与正则表达式匹配

html - 如何在 html 输入字段中使用文本溢出省略号?

php - 用mysql分组

javascript - 语法错误 : expected expression, 得到 '.'

javascript - 始终使用 CSS3 Flexbox 居中 Div?

javascript - 如何在电子邮件中插入带有一些特殊字符的URL链接到:body?