Регулярное выражение JS исключает только http - https должен быть включен - PullRequest
1 голос
/ 15 октября 2019

Мне нужно использовать Javascript для проверки ввода URL-адреса, где допустимы все URL-адреса, кроме небезопасного протокола http.

Пример допустимых URL-адресов:

https://example.com/
https://example.com/path
application://example.com/path
application://example

Пример неверного URL-адреса:

http:\\example.com

Я пробовал использовать отрицательный прогноз, но он не работает:

^(?!http[s]{0}).*:\/\/.*$

Как написать регулярное выражение, исключающее только протокол http (должны быть включены другие протоколы, например, https)

Ответы [ 2 ]

2 голосов
/ 15 октября 2019

Вы можете использовать его следующим образом:

^(?!http:)[^:]+:\/\/.+$

(?!http:) является отрицательным предвкушением, чтобы провалить совпадение, если строка начинается с http:, таким образом, проваливаясь совпадение для http://... URL.

Однако обратите внимание, что это регулярное выражение не выполняет сложную проверку URL, оно просто заботится о неудачном совпадении для http: URL /

0 голосов
/ 15 октября 2019

Вы можете использовать URL api и сопоставить свойство protocol с http:

let urlTester = (url) => {
  let urlParsed = new URL(url)
  return urlParsed.protocol !== 'http:'
}

console.log(urlTester('https://example.com/'))
console.log(urlTester('https://example.com/path'))
console.log(urlTester('application://example.com/path'))
console.log(urlTester('application://example'))
console.log(urlTester('http://example.com'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...