Какой regex должен быть что бы покрыть все эти кейсы, искал на разных порталах, но подходящего так и не нашел. Нужно пропускать только валидные урлы
http://localhost:8080
https://some-host-name
https://127.0.0.1:4545
http://load-balancer/some-path
http://load-balancer:8332
http://load-balancer:8332/some-path
http://localhost:8080/storage/v1/diag/ping
https://some-host-name/storage/v1/diag/ping
https://127.0.0.1:4545/storage/v1/diag/ping
http://load-balancer/some-path/storage/v1/diag/ping
http://load-balancer:8332/storage/v1/diag/ping
http://load-balancer:8332/some-path/storage/v1/diag/ping
Можно воспользоваться конструктором URL, но он пропустит не только http/https ссылки.
Впрочем, можно дополнить функцию проверкой схемы объекта URL.
let urls = [
'http://localhost:8080',
'https://some-host-name',
'https://127.0.0.1:4545',
'http://load-balancer/some-path',
'http://load-balancer:8332',
'http://load-balancer:8332/some-path',
'http://localhost:8080/storage/v1/diag/ping',
'https://some-host-name/storage/v1/diag/ping',
'https://127.0.0.1:4545/storage/v1/diag/ping',
'http://load-balancer/some-path/storage/v1/diag/ping',
'http://load-balancer:8332/storage/v1/diag/ping',
'http://load-balancer:8332/some-path/storage/v1/diag/ping',
'ftp://example.org/123',
'my@email', // TypeError will be thrown
];
function isUrlValid(url) {
try {new URL(url); return true;}
catch(e) {return false;}
}
urls.forEach(url => {
console.log(url, isUrlValid(url));
});
Мне это для валидации инпута
Используйте input[type=url]
const url = document.querySelector('input');
document.querySelector('button')
.addEventListener('click', e => {
console.log(url.checkValidity())
})
<input type="url" pattern="https?://.*" required="required" value="http://???" />
<button>Check</button>
Вот эта регулярка вам подойдет - ^http[s]?:\/\/[a-zA-Z\d.-]+[:]?[\d]{0,4}[\/]?[a-zA-Z\d\/-]+
.
Но как сказал @andreymal - при такой формулировке вопроса вам и (.*) хватит.
Единственное, что по факту определяет предоставленная мной регулярка - это схему.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть учебное заданиеНужно достать достать из раздела с мотоциклами всю информацию по объявлениям что есть
не работает код кнопки передающий данные таблици в pdf в файле который с расширением html работает, а вот уже в php нет в чем может быть проблема?
Всем привет! Я использую Яндекс геокодер в приложении cordovaКарты работают нормально, однако геокодер выдает ошибку: Failed to load resource: the server responded...