2010-10-31 53 views
0

我有下面的正則表達式(/\?(.*?)\&/)當我在下面的JavaScript代碼中使用它時,它刪除了「?」從更換結果。需要修改這個正則表達式不能刪除一個字符

href=href.replace((/\?(.*?)\&/),"") 

的開始href的值是這個...

/ShoppingCart.asp?ProductCode=238HOSE&CouponCode=test 

我得到這個作爲我的結果現在...

/ShoppingCart.aspCouponCode=test 

我想獲得這個...

/ShoppingCart.asp?CouponCode=test 

如何修改正則表達式來完成此操作

感謝您的幫助。

回答

1

爲了做正確,你需要一個正則表達式的回顧後,但是這應該工作你的情況:

href=href.replace((/\?(.*?)\&/),"?") 
+0

大聲笑,哇,這很簡單,感覺很傻,我想不起。謝謝!!! – user357034 2010-10-31 15:56:29

+0

請記住,最小匹配不排除再次匹配前面的部分;例如,「foo?bar?glarch&done」會變成「foo?done」。有可能'/ \?([^?&] *)&/'會更好地工作,並且肯定會更快。可惜Javascript不允許使用'/ x'。 – tchrist 2010-10-31 16:15:30

2

打上問號在更換子:

href=href.replace((/\?(.*?)\&/),"?") 

如果,說,字符可以比一個問號以及(說也許斜線是一種可能性)別的東西,你需要保留它是哪一個,你可以使用一個捕獲組:

href=href.replace((/([?\/])(.*?)\&/),"$1") 

JavaScript正則表達式不支持Lookbehinds。

相關問題