2011-05-10 2 views
4


Я пытаюсь получить к категории части это строка «property_id=516&category=featured-properties», так что результат должен быть «признаки-свойство», и я пришел с регулярным выражением и протестировал его на этом сайте http://gskinner.com/RegExr/ , и он работал, как ожидалось, но когда я добавил регулярное выражение к моему javascript-коду, у меня была ошибка «Invalid regular expression», может ли кто-нибудь сказать мне, что испортило этот код?Invalid ошибки регулярного выражения

Спасибо!

var url = "property_id=516&category=featured-properties" 
var urlRE = url.match('(?<=(category=))[a-z-]+'); 
alert(urlRE[0]); 

ответ

7

Позитивные просмотра назад (ваш ?<=) не поддерживаются в JavaScript, который вызывает ваш RegEx потерпеть неудачу.

Вы можете имитировать их в целую кучу разных способов, но это может быть проще RegEx, чтобы получить работу за вас:

var url = "property_id=516&category=featured-properties" 
var urlRE = url.match(/category=([^&]+)/); 
// urlRE => ["category=featured-properties","featured-properties"] 
// urlRE[1] => "featured-properties" 

Это супер-простой пример, но поиск StackOverflow для Образец RegEx для анализа параметров URL будет содержать более надежные примеры, если они вам понадобятся.

+0

+1 подробное описание ошибки (положительные взгляды) – DanielB

3

Синтаксис испортил ваш код.

var urlRE = url.match(/category=([a-z-]+)/); 
alert(urlRE[1]); 
+0

, чтобы указать его: использовать косые черты как разделитель для регулярного выражения, а не кавычки. – Spudley

+0

Он по-прежнему дает мне эту ошибку «Uncaught SyntaxError: Недопустимое регулярное выражение:/(? <= (Category =)) [a-z -] + /: Недопустимая группа« – KarimMesallam

+0

Я обновил выражение для работы с javascript. были некоторые не поддерживаемые выражения. – DanielB

0

Если вы хотите, чтобы проанализировать параметры URL, вы можете использовать функцию getParameterByName() с этого сайта:

В любом случае, как уже отмечалось выше, регулярные выражения в JavaScript не являются строковыми:

0
var url = "property_id=516&category=featured-properties", 

    urlRE = url.match(/(category=)([a-z-]+)/i); //don't forget i if you want to match also uppercase letters in category "property_id=516&category=Featured-Properties" 
    //urlRE = url.match(/(?<=(category=))[a-z-]+/i); //this is a mess 

    alert(urlRE[2]); 
Смежные вопросы