Диапазон регулярных выражений шаблонов ввода Firefox
Это связано с той же проблемой, что и этот вопрос:
При использовании экранированных символов в <input>
Атрибут pattern Firefox выдает эти ошибки в консоль:
Невозможно проверить
<input pattern='^[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa-zA-Z\s\'-]{1,50}$'>
потому что шаблон не является допустимым регулярным выражением: недопустимый escape-идентификатор в регулярном выражении
Так что при использовании pattern
атрибут на <input>
поле, символы Unicode больше не нужно экранировать. В этом случае пользователь просто должен прекратить экранирование своих персонажей и изменить \@\%
в @%
, задача решена.
У меня есть несколько более сложный шаблон регулярных выражений, что мне поменять на работу в Firefox?
<input type="text" pattern="^[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa-zA-Z\s\'-]{1,50}$">
По сути, он допускает любую строку длиной от 1,50 символов, если все символы находятся в следующих диапазонах:
- \ U00A0- \ uD7FF
- \ UF900- \ uFDCF
- \ UFDF0-\uFFEF
- Аризона
- Аризона
а также пробелы, апострофы и дефисы. Быстрый поиск видит \u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa
часть его довольно широко используется во всевозможных регулярных выражениях. Я просто не вижу, что именно использовать вместо ссылок на экранированные символы Юникода.
1 ответ
Вы должны удалить обратную косую черту перед одинарной кавычкой.
Обратите внимание, что в обычном HTML5 pattern
поле, не нужно использовать ^
а также $
привязывает начало / конец шаблона, так как атрибут шаблона HTML5 заключает в себе переданный шаблон с ^(?:
а также )$
, Однако, согласно вашим отзывам, проверка Abide обходит это и передает незафиксированный шаблон в механизм регулярных выражений. Таким образом, вы должны оставить якоря.
<input type="text" pattern="^[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa-zA-Z\s'-]{1,50}$">
Небольшая демонстрация:
<form>
<input type="text" pattern="[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEFa-zA-Z\s'-]{1,50}">
<input type="submit">
</form>