2014-08-30 5 views
0

У меня есть следующие функции (которые я не писали) для извлечения значения параметра URL:Извлечение значения параметра URL в JavaScript

function getURLParameter(name) { 
    return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [, ""])[1].replace(/\+/g, '%20')) || null 
} 

Я практически не имею опыта работы с регулярными выражениями. В этом коде в настоящее время выполняется поиск имени параметра с учетом регистра. Я бы хотел, чтобы RegExp делал регистр без учета регистра для имени параметра. Может ли кто-нибудь показать мне, как я могу изменить это, чтобы это сделать?

+1

Возможно, вам следует начать с [извлечения всех параметров] (http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript), а затем обработать нечувствительность к регистру - возможно, с вызовом 'map()' для итерации по каждому из параметров. – Lix

+0

Возможно, я ошибаюсь, но похоже, что он уже нечувствителен к регистру ... – jwatts1980

+1

Посмотрите на модификаторы RegExp, заданные как второй параметр на 'RegExp'. Вы можете присвоить '' i'' 'второй параметр 'new RegExp' для выполнения поиска без учета регистра. – nisargjhaveri

ответ

3

Добавить i флаг для регулярного выражения (more info):

new RegExp('your regexp', 'i') 
+0

Работает отлично. Спасибо. –

+0

Вам даже не нужно 'new'. – elclanrs

0

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

Вот общий формат моих URL-адресов:

файл: ///Users/myname/folder/teamname.html

А вот что, как я их разборе:

function parseURL() { 
    var match = window.location.href.match(/(\w+).html$/); 
    if (match) { 
    return match[1]; 
    } 
    return null; 
} 

Это сделает следующее:

1) Проверьте URL-адрес текущей страницы 2) Разберите URL-адрес на два разных фрагмента массива: «teamname» и «html» 3), то я вернусь матч [1], который является "teamname"

Как я использую это:

Оттуда, я объявляю переменную для функции parseURL так:

var teamSched = parseURL(); 

Итак, теперь я могу делать динамические вызовы для любой страницы с тем же синтаксисом URL, который я изложил выше, чтобы иметь конкретный код, выполняемый с переменной для страницы от parseURL(). Затем я использую эту переменную для генерации уникальных наборов данных из объектов в моем коде, ключ которого соответствует переменной «team name», созданной parseURL().

Кто-то определенно исправляет меня, если я ошибаюсь, но чувствительность к регистру не должна быть фактором здесь, пока значение, которое вы вытягиваете из своего URL-адреса через parseURL, соответствует переменной, объекту и т. re пытается получить доступ.

Я надеюсь, что это поможет!

Смежные вопросы