According to the OP, вопрос был решен с помощью атрибута HTML5 pattern
с соответствующим регулярным выражением на <input>
, например, так:
<input type="url" pattern="^[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$">
Я хотел бы добавить, что это не обязательно является лучшим решением. Трудно найти точное регулярное выражение, которое будет работать для всех каждый раз. Если вам нужно использовать такую явную проверку, я предлагаю вам послушать отзывы пользователей и при необходимости изменить регулярное выражение.
Лично я не делаю много проверки на входах в URL, таким образом, у пользователя будет свобода использования любого домена, а не только хорошего ol 'example.com
. Кроме того, URL-адреса также могут быть в виде IP-адреса, например http://127.0.0.1/
или не иметь точки в них, например http://localhost/
. Мне просто легче разрешить все, что пользователь вводит в текстовое поле, явно избегая значения по мере необходимости, если оно хранится в базе данных.
В качестве закрывающего слова я хотел бы указать на то, что вы не должны полагаться на компетенцию пользователей. Зачем? Ну, несмотря на то, что http://
, находясь перед этим входом, ленивые люди (включая меня), вероятно, просто вставляют URL-адрес: CtrlC 'd из адресной строки браузера и забыть об удалении этого протокола с самого начала, надеясь что сайт автоматически сделает это для собственного удобства. Вы должны также учитывать это при создании проверки ввода, потому что это может отбросить некоторых людей, которые только что вставили действительный URL-адрес в ваш ввод, и он сообщает им, что это неправильно.
Используйте атрибут 'pattern' и укажите регулярное выражение, которое не требует протокола. – SeinopSys
Вам нужно использовать тип ввода URL? Вместо этого используйте 'type =" text "'? – Luke
@ilovecode Не читал ли вы последнюю строку? – epascarello