2012-01-17 5 views
4
function example(){ 
    var quantity = "http://www.example.com/index.php?brandid=b%123&quantity=20"; 
    quantity = quantity.replace(-what regular expression should i user-, "quantity=50"); 
} 

я хочу, чтобы заменить только quantity=20 на quantity=50 в ссылке. но я попробовал некоторые из регулярного выражения, такие как:Regexp Javascript замена

replace(/quantity=[^\d]/g,"quantity=50"); 
replace(/quantity=[^0-9]/g,"quantity=50"); 

, так что я хотел бы иметь некоторую помощь от опыта в регулярном выражении, чтобы помочь мне =) спасибо

+0

Не используйте каретку '^' в части [0-9]. Карет там говорит, чтобы найти что-нибудь * но * что следует. Вместо этого попробуйте следующее: '[0-9] +', поскольку оно будет соответствовать любому числу один или несколько раз. –

ответ

3
replace(/quantity=[\d]+/g,"quantity=50") 
+0

Это не сработает. Вам либо нужно положить '+' за пределы скобок, либо - еще лучше - не использовать скобки вообще. Все внутри класса символов представляет собой символ * one *. –

+0

Извините, опечатка, исправлена. –

+1

Как насчет '? Some_other_quantity = 5 & quantity = 9'? – alex

0

Вот один из способов вы можете сделать это , Он будет работать только с строкой запроса, а не с полным URL-адресом.

function example(){ 
    var quantity = 'http://www.example.com/index.php?brandid=b%123&quantity=20', 
     a = document.createElement('a'); 

    a.href = quantity; 

    a.search = a.search.replace(/([?&;]quantity=)\d+/, '$150');; 

    return a.href; 
} 

jsFiddle.

+0

anchor.search начнется с '?', Поэтому, вероятно, должно быть 'a.search = a.search.replace (/ ([& ^; \?] Quantity =) [\ d \.] + /, '$ 150 '); 'Также добавлен десятичный символ, на всякий случай. – rgthree

+0

@rgthree: Я забыв: P – alex

0
replace(/[?&]quantity=\d+([&]?)/g,"$1quantity=50$2"); 

попробовать это^


([?&]) 

группу вместе либо символ '?' или «&» (один и только один полукокс), как группа с именем $ 1

\d+ 

найти по крайней мере один цифра и найти самую длинную последовательную строку цифр если есть> 1 цифра

([&]?) 

группироваться либо пустая строка (если в конце) или '& ' как группа с именем $ 2

'? ' означает совпадение нуля или один раз

путем группировки группы совпадений в() ...() ....(), а затем использовать ее в виде $ 1, $ 2, $ 3 ... вы можете выполнить поиск и заменить плюс множество более сложных операций.

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