Wan*_*nda 5 html javascript regex string object
我有以下代码,因此我可以从 url 获取参数。
然而,其中一个参数&在文本中有一个符号,导致文本被截断。我如何让 & 符号在它后面显示相应的文本?
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
function(m,key,value) {
vars[key] = value;
});
return vars;
}
var cmp = getUrlVars()["cmp"];
document.getElementById("currentMemberPackage").value = cmp;
var replaced = cmp.replace(/%20/g, " ");
Run Code Online (Sandbox Code Playgroud)
示例 URL = ?Club%20Plus%20Health%20&%20Fitness(我无法更改它,因为它&在推送到 URL 的数据中具有)
显示: Club Plus Health
应该是: Club Plus 健康与健身
这是数据提供者方面的错误,请告知数据提供者,因为该问题应该得到修复。
如果您知道所有可能的键值并且它们不是太多,则有一种方法可以 100% 正确地提取值。在这种情况下,正则表达式可能看起来像
new RegExp("[?&]+([^=&]+)=(.*?)(?=&(?:" + your_keys.map(function(x) {return x.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');}).join("|") + ")=|$)", "gi")
Run Code Online (Sandbox Code Playgroud)
有一个脆弱的通用非 100% 解决方法,例如
/[?&]+([^=&]+)=(.*?)(?=&[^=&]+=|$)/gi
Run Code Online (Sandbox Code Playgroud)
请参阅此正则表达式演示。您可以使用它,直到数据提供商解决问题并且您不知道所有可能的密钥。
细节
[?&]+- 1 个或?多个&字符([^=&]+)=- 第 1 组:除了和之外的一个或多个字符& = - 等号(.*?)- 第 2 组:除了换行符之外的任何 0+ 个字符,尽可能少(?=&[^=&]+=|$)- 后跟、除and&之外的一个或多个字符以及 then或字符串末尾。=&=