2013-03-18 5 views
-5

В чем разница в том, что делают эти 2? Thxразница между 2 регулярными выражениями

var m = document.referrer.match(/\&cd=([\d]*)/); 

и

var m = document.referrer.match(/cd=(.*?)&/); 

Какой является более эффективным и эффективным?

+8

Действительно для чего? Они не делают то же самое. –

+2

они оба хотят URL-адрес с параметром 'cd' в части запроса, но для этого требуются цифры и другие параметры запроса перед ним. другой разрешает ЛЮБЫЕ значения, но после этого требует другой параметр запроса. например они связаны, но определенно НЕ то же самое. –

+1

Наиболее эффективным и эффективным является тот, который дает вам правильный ответ быстрее всего. Не зная, что именно вы пытаетесь найти, кто знает. –

ответ

3

/\&cd=([\d]*)/ - соответствует любой строке, начиная с «& кд =», а затем с помощью любых ноль или более десятичных цифр. Первая группа захвата - это десятичные цифры.

/cd=(.*)&/ - соответствует любой строке, начиная с «CD =» следуют ноль или более символов вплоть до и включая первый «&». Первая группа захвата - это все символы между «cd =» и «&».

Они похожи, но не эквивалентны. Какой из них вы должны использовать, зависит от ваших конкретных потребностей. Судя по вашему комментарию, похоже, что вы хотите использовать:

var m = document.referrer.match(/[?&]cd=(\d+)/); 
+1

'cd = (. *) &' Будет разрешать 'garbagecd = something &' для соответствия, но исключает случай, когда 'cd = что-то «в конце». '\ & cd = ([\ d] *)' не может записывать полное значение 'cd', если значение содержит нечто, отличное от цифр, и также исключает случай, когда' cd' - первая пара ключей и значений , – nhahtdh

+0

Использование первого дает мне много 0 (нулевых) значений, что в этом случае является ненормальным. Чтобы уточнить - я извлекаю значение ранжирования ключевого слова из URL-адреса результатов поиска google. Извиняюсь за то, что не заявлял об этом раньше. – user2022284

+0

@ user2022284 Что значит 0 значений? что он не соответствует входной строке? что группа захвата пуста? что захваченное значение '' 0 "'? –

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