这是html5横幅的一段简单代码,适用于特定的广告投放平台,但在Chrome中运行时会出现错误。
错误是:
index.html:5 Uncaught SyntaxError: Invalid regular expression: missing /
我在阅读这种正则表达式代码时并不是一个高手。任何人都可以找出问题所在吗?
function getParameterByName(name){
name=name.replace(/[\/, "\\[").replace(/[\]/, "\\]");
var regex = new RegExp("[\\?&]" + name + '=([^&#]*)"),results = regex.exec(location.search); return results === null ? "":decodeURIComponent(results[1].replace(/\+/g, " "));
}
var clickTAG = getParameterByName("clickTAG");
我发现了一段非常相似的代码,不会引发错误:
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" :
decodeURIComponent(results[1].replace(/\+/g, " "));
}
区别在于这一行
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
- 工作
name = name.replace(/[\/, "\\[").replace(/[\]/, "\\]");
- 无法正常工作
区别是什么? []
的含义是什么,并添加了额外的]
?
答案 0 :(得分:2)
你的第一行代码有问题,它没有关闭/,然后第二行没有正确的封闭字符串,试试这段代码,它可以正常工作
function getParameterByName(name){
name=name.replace(/[\/]/, "\\[").replace(/\[\]/, "\\]");
var regex = new RegExp("[\\?&]" + name + '=([^&#]*)'),results = regex.exec(location.search); return results === null ? "":decodeURIComponent(results[1].replace(/\+/g, " "));
}
var clickTAG = getParameterByName("clickTAG");
答案 1 :(得分:1)
编辑:在你的正则表达式构造函数中替换'with'
new RegExp("[\\?&]" + name + '=([^&#]*)"),
------------------------------------------ ^这个字符在箭头上方应该是“
'=([^&#] *)“此元素不在”“中,也不在''。
根据您发布的代码:
new RegExp("[\\?&]" + name + '=([^&#]*)") // your code
new RegExp("[\\?&]" + name + "=([^&#]*)") // working code
很容易发现差异