Похоже, что спецификация HTML5 (и, следовательно, ECMA262) позволяет <input type="text" pattern="[0-9]/[0-9]" />
соответствовать строке "0/0" даже хотя прямая косая черта не ускользает. Веб-приложения, такие как Drupal, хотели бы обеспечить проверку на стороне сервера для браузеров, которые не поддерживают HTML5, с чем-то вроде:
<?php
preg_match('/^(' . $pattern . ')$/', $value);
?>
К сожалению, строка '[0-9]/[0-9]' не является допустимым регулярным выражением PRCE. Похоже, что большинство, если не все браузер, поддерживающий HTML5, поддерживают как pattern="[0-9]/[0-9]"
, так и pattern="[0-9]\/[0-9]"
, который задает вопрос - что мы можем использовать в качестве разделителя для запуска этого шаблона с регулярным выражением в стиле Perl?
Мы подали отчет об ошибке против спецификации W3C, но являются ли здесь браузеры неправильными? Нужно ли уточнять спецификацию HTML5? Есть ли способ обхода, который мы можем использовать в PHP?