как я могу проверить URL в JavaScript с помощью регулярного выражения

когда Вы говорите, что строка s = "эта строка" тогда s [0] является символом в в определенном индексе в той строке (в этом случае s [0] == 't')

Так для ответа на вопрос, используйте двойные кавычки или одинарные кавычки, можно думать о следующем как о значении того же самого:

string s = " word word";

// check for space as first character using single quotes
if(s[0] == ' ') {
 // do something
}

// check for space using string notation
if(s[0] == " "[0]) {
 // do something
}

, Как Вы видите, с помощью одинарной кавычки для определения единственного символа, намного легче, чем попытка преобразовать нашу строку в символ только для тестирования.

if(s[0] == " "[0]) { 
 // do something
}

действительно похож на высказывание:

string space = " ";
if(s[0] == space[0]) {
 // do something
}

, Надо надеяться, я не смущал Вас больше!

6
задан Rene Saarsoo 14 September 2009 в 14:28
поделиться

3 ответа

Я предполагаю, что вы знаете, как получить значение с помощью JavaScript. Итак, ваша проблема заключается в написании специальной функции для проверки URL.

Сначала мы можем рассмотреть проверку синтаксической правильности URL .

Некоторые примеры, которые наш валидатор URL определенно должен рассматривать как ОК:

http://www.example.com.
http://www.google.ee/search?q=foo&sourceid=opera&ie=utf-8&oe=utf-8
https://ama-z-on.co.uk/index.html?a=hei%20hoo
ftp://ftp.linux.ee/public/gentoo/i386/portage-snapshot.tar.bz
http://he.wikipedia.org/wiki/שטרגליים#.D7.A8.D7.90.D7.95_.D7.92.D7.9D
sftp://123.1.255.128:80/pub

И это лишь небольшая часть реального разнообразия возможных URL-адресов. И HTTP и FTP - не единственные протоколы, доступные для URL. О боже, эта проверка URL-адреса действительно сложна.

Но давайте предположим, что действительный URL-адрес должен начинаться с нескольких букв, затем с ": //" и после этого что угодно. Чтобы проверить этот тип шаблона, вы должны использовать регулярное выражение, которое в JavaScript выглядит так:

function validateUrl(url) {
  return /^[a-z]+:\/\//i.test(url);
}

Регулярные выражения - это целая большая тема, которую вам следует изучить самостоятельно,

  • [az] - соответствует a, b, c, ..., x, y или z.
  • + - означает, что предыдущий шаблон может повторяться один или несколько раз.
  • : - соответствует самому символу двоеточия.
  • \ / - соответствует прямой косой черте / (без обратной косой черты JavaScript будет думать, что это конец регулярного выражения ).
  • / - завершает регулярное выражение.
  • i - это модификатор, который делает это регулярное выражение нечувствительным к регистру.
  • .test (url) - вызывает тестовый метод объекта регулярного выражения с параметром url . Когда параметр соответствует регулярному выражению, он возвращает true в противном случае false .
  • Кроме того, вы можете разрешить ввод URL без http: // часть - это означает, что вам действительно нужно проверить доменное имя или IP-адрес или что-то еще, что следует за ним.

    Я думаю, вы уже довольно запутались, и это сделано намеренно. Вам действительно не следует писать JavaScript для проверки URL самостоятельно, это слишком сложно сделать правильно. Вместо этого вам следует использовать библиотечную функцию , которая проверена и подтверждена многими экспертами как правильная.

    Возможно, у используемого вами JavaScript-кода уже есть хороший инструмент для этой работы. В таком случае используйте его. К сожалению, я не могу предложить какую-либо конкретную библиотеку для проверки URL.

    Кроме того, вы можете рассмотреть возможность пинговать URL , как предложил Джош Стодола, чтобы проверить, действительно ли он существует. Хотя, как предлагает Джош,

    10
    ответ дан 9 December 2019 в 20:46
    поделиться

    Выполните базовый тест RegExp для форматирования. Затем проверьте URL-адрес с помощью XMLHttpRequest , чтобы убедиться, что он существует. Пример использования jQuery ...

    var url = $("#txtUserWebSite").val();
    var reg = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([,-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([,-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([,-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/; 
    
    if(!reg.test(url)) {
      alert("Invalid URL!");
      return false;
    }
    
    $.get(url, function(dat, stat) {
      if(stat == "success")
        alert("Valid URL!");
      else
        alert("Invalid URL!");
    })
    
    2
    ответ дан 9 December 2019 в 20:46
    поделиться

    Посетите Библиотеку регулярных выражений , в которой есть большой репозиторий регулярных выражений для всех видов проверок. Они также предоставляют инструмент онлайн-тестирования.

    -1
    ответ дан 9 December 2019 в 20:46
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: