2010-10-31 25 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。

相关问题