Разрешить только HTTPS URL в поле ввода

Я использую Trumbowyg, редактор WYSIWYG JavaScript, который позволяет отображать изображения, вставляя URL.

Таким образом, вы вставляете URL в поле и затем нажимаете Confirm и затем он добавляет изображение в редактор ( вы можете проверить его здесь)

Я хочу предотвратить добавление изображений, которые не являются HTTPS. Поэтому, если кто-то вставит URL, не являющийся HTTPS, я хочу запретить добавление изображения при нажатии Confirm,

Это функция для URL изображения ( из документации):

insertImage: function () {
            var t = this;
            t.saveRange();

            var options = {
                url: {
                    label: 'URL',
                    required: true
                },
                alt: {
                    label: t.lang.description,
                    value: t.getRangeText()
                }
            };

            if (t.o.imageWidthModalEdit) {
                options.width = {};
            }

            t.openModalInsert(t.lang.insertImage, options, function (v) { // v are values
                t.execCmd('insertImage', v.url);
                var $img = $('img[src="' + v.url + '"]:not([alt])', t.$box);
                $img.attr('alt', v.alt);

                if (t.o.imageWidthModalEdit) {
                    $img.attr({
                        width: v.width
                    });
                }

                t.syncCode();
                t.$c.trigger('tbwchange');

                return true;
            });
        }

Любая идея, как я могу изменить эту функцию, чтобы разрешить только входы HTTPS?

3 ответа

Решение

Хорошим решением этой проблемы было бы использование регулярных выражений или коротких: Regex.

Regex позволяет вам проверить, действительно ли строка содержит ожидаемые вами данные. Недостатком регулярного выражения является интенсивная загрузка процессора. Вот почему регулярное выражение следует использовать только в том случае, если для этой работы нет другой функции. Как это бывает, для этого есть еще одна функция: substr ().

Поэтому лучшим решением будет:

var url = v.url;

if(!url.substr(0,7) === 'https://'){
    return false;
}

Хотя изучение регулярных выражений определенно полезно в долгосрочной перспективе. Веб-сайт, который поможет вам в этом, https://regex101.com/. В конечном итоге вы столкнетесь с ситуациями, когда другие решения просто недоступны. Поэтому тестирование с помощью регулярных выражений является хорошим способом обучения. Используя регулярное выражение, решение будет:

var url = v.url;

if(!url.match(/^https:\/\//)){
    return false;
}

Вы можете использовать регулярное выражение для проверки наличия "https" в URL-адресе, например url.match(/^https/), или использовать url.startsWith("https"), чтобы определить, начинается ли URL-адрес с https или нет.,

Я бы использовал регулярное выражение, чтобы проверить это

var url = v.url;

затем используйте функцию соответствия

url.match(/^https:\/\//);

Остерегайтесь использования startsWith('https') чтобы проверить это, как startsWith() не поддерживается во всех браузерах

Другие вопросы по тегам