我有以下两个网址:
url1 = http://localhost:8000/i/dashboard-view?
&level_to_load=1&click_value=%C2%AB%20backll%20Billing%20PartiesC2%
AB%20backll%20Billing%20Parties
url2 = http://localhost:8000/i/dashboard-view?&level_to_load=1
&click_value=%C2%AB%20backll%20Billing%20PartiesC2%AB%20backll%20Billing%20Parties
&new_value=2
我希望能够提取包含“click_value = ...”的部分。
正则表达式之后生成的两个URL应为:
url1 = http://localhost:8000/i/dashboard-view?&level_to_load=1
url2 = http://localhost:8000/i/dashboard-view?&level_to_load=1&new_value=2
我目前的正则表达式是:
url.replace(/click_value=.+&/, '');
但显然不够。什么是正确的正则表达式?
答案 0 :(得分:2)
您可以将click_value
GET字符串与此正则表达式匹配:
&?click_value=[^&#\s]*
因此,要修改它们,
result = url.replace(/&?click_value=[^&#\s]*/mg, "");
<强>讨论强>
这里的关键是匹配正确的字符数而不是更多。我在@ ridgerunner的深刻观察中修改了原来的答案,在许多网址中,虽然可能不在你的网址中,但最后可能会有一个锚标记,从#
开始,我们不会这样做想要替换。感谢他提供了改进的答案,不再使用前瞻。
<强>令牌通过令牌强>
&? # '&' (optional (matching the most amount
# possible))
click_value= # 'click_value='
[^&#\s]* # any character except: '&', '#', whitespace
# (\n, \r, \t, \f, and " ") (0 or more times
# (matching the most amount possible))