- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
<input id="input" name="email" autocomplete="on" pattern="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$">
В консоли ошибка: Pattern attribute value ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ is not a valid regular expression: Uncaught SyntaxError: Failed to read the 'validationMessage' property from 'HTMLInputElement': Invalid regular expression: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/v: Invalid character in character class
В ошибке сказано, что есть какой-то не допустимый символ и почему-то показывает с слешами и флагом v, хотя в самом паттерне их нет
Первоначально я добавляю паттерн из js, упрощённый код:
.source убирает слеши
ЗЫ. Не пойму пока в чём дело??
а просто type="email" и required не устроит?
Нет. Я сделал с подсветкой при вводе данных, если не соответствует, то поле становится красным.
required только обязывает заполнение поля, а при отправке формы проверяется только наличие @ в середине
Проверяю другие варианты регулярок, конечно хочется учесть все возможные, но думаю придётся сделать по минимуму, input.pattern коряво сделан в браузере
Пока все говорит о том, что нельзя применять флаг v. Который относительно новый. т.е. если нужна поддержка браузеров, которые еще считаются актуальными, но не поддерживают этот флаг - применяй полифил, или реализуй это самостояетльно.
Пока все говорит о том, что нельзя применять флаг v. Который относительно новый. т.е. если нужна поддержка браузеров, которые еще считаются актуальными, но не поддерживают этот флаг - применяй полифил, или реализуй это самостояетльно.
Ты видишь в моём паттерне этот флаг? Его там нет. В браузере коряво сделана проверка самого паттерна.
ЗЫ. Я уже решил проблему, экранировал один символ + добавил поддержку кириллицы и других спец символов.
Спросил нейронку. Говорит, дефис не экранирован.
Правильно:
<input id="input" name="email" autocomplete="on" pattern="[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}">
Причина ошибки
Проблема, скорее всего, связана с дефисом ( - ) в классе символов [a-zA-Z0-9._%+-] . В классе символов дефис должен быть либо экранирован ( \- ), либо помещен в начало или конец класса, чтобы избежать интерпретации как диапазона (например, az ). В вашем шаблоне дефис в ._%+- находится в конце класса символов, что технически правильно, но некоторые браузеры все равно могут неправильно его интерпретировать или выдавать ошибки из-за строгого синтаксического анализа.
Кроме того, атрибут шаблона HTML ожидает регулярное выражение, которое работает без разделителей (например , / ) и без флагов, и оно должно быть совместимо с движком регулярных выражений JavaScript. Предоставленный вами шаблон должен работать, но давайте исправим все потенциальные проблемы и обеспечим совместимость.
Решение
Экранируйте дефис в классе символов, чтобы избежать неправильного толкования: замените[a-zA-Z0-9._%+-]на[a-zA-Z0-9._%+\-](обратите внимание на экранированный дефис\-).
Говорит, дефис не экранирован.
Правильно говорит. Если бы я не сказал что экранировал символ, то нейронка вам бы не смогла это ответить, я тоже спрашивал и не получил правильного ответа. Стал частично проверять регулярку и выявил проблему.
Правильно говорит. Если бы я не сказал что экранировал символ, то нейронка вам бы не смогла это ответить, я тоже спрашивал и не получил правильного ответа. Стал частично проверять регулярку и выявил проблему.
По моим наблюдениям, Грок справляется с программированием в разы лучше обычного чата Жпт и Дипсика. Ему можно и посложнее вопросы задавать. ))
Правильно говорит.
Это проблема конкретной реализации. По правилам дефис в начале или в конце множества не нужно экранировать.
И непустое множество, допускающее точку, а потом опять точка - как-то не очень.
По правилам дефис в начале или в конце множества не нужно экранировать.
Вот и я так думал. А в браузере оказывается надо экранировать..
И непустое множество, допускающее точку, а потом опять точка - как-то не очень.
Регулярка изначально не моя, хорошо что не рабочая оказалась, свою составил получше.
ЗЫ. Просто первоначально накидал регулярок под разные значения, tel email, url, дата-время и тд. почти все нормальные оказались с небольшими правками кроме email(пришлось подольше перепроверять и переделывать)