2014-07-23 34 views
-1

我處理兩個查詢字符串模式替換正則表達式: str='Notebook!!2'str='Notebook+HP+14-d028!!2!!583304'查找和使用jQuery

嗯,我需要更換其中附帶的任何數字「!!ñ!」 重要的是,我通過cookie收到此分隔符。 這就是我想...

qstr='Notebook!!2' 
//qstr='Notebook+HP+14-d028!!2!!583304' 
str=urldecode(qstr); 
d=$.cookie('d'); 
new_str=str.replace(/d*d/g,"d1d"); 
alert(new_str); 

我使用jQuery的1.9.1。

預期的輸出是 '筆記本!! 1' 和 '筆記本電腦+ HP + 14-D028 !! 1 !! 583304',按照上面的例子

,我使用jQuery的其他東西,這就是爲什麼我問了它。

任何提示?非常感謝。

+2

爲什麼強調jQuery的?它看起來像你想給我一個純粹的JavaScript答案。 – davidkonrad

+2

預期產量是多少? –

+0

我更新了我的問題。 – Roger

回答

0

正則表達式的解決方案:

p='Notebook+HP+14-d028!!10!!583304'; 
H='!!'; 
r=/^(.*)!{2}([0-9]+)!{2}([0-9]+)$/; 
r_to="$1!!1!!$3"; 
//var a=p.match(r); 
var a=p.replace(r,r_to); 
alert(a); 

老同學的解決方案...

//str='Notebook!!2' 
str='Notebook+HP+14-d028!!2!!583304' 
hash=$.cookie('hash'); //'!!' 
i=str.indexOf(hash); 
times=str.match(new RegExp(hash,'g')).length; 
x=str.substring(0,i+hash.length); 
q=x+'1'; 
if(times>=hash.length*2){ 
    ii=str.lastIndexOf(hash); 
    l=str.length; 
    y=str.substring(ii+hash.length,l); 
    q=q+hash+y; 
} 
alert(q); 
1
var new_str = str.replace(/!!\d+!!/g, ""); 
+0

謝謝,但在我的情況下,我不知道分隔符是「!!」,這就是爲什麼我通過cookie加載它。所以,正則表達式必須接受裏面的變量,而不是字面的「!!」我在例子中使用了......分隔符可以是「##」或「__」等等。 – Roger