我在html文件中有一个JavaScript函数:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<script type="text/javascript">
function redirect() {
var queryString = location.search.replace(/^?commonHelpLocation=/, '');
alert(queryString);
window.location = queryString;
}
</script>
</head>
<body onload="redirect();"></body>
</html>
我的网址是:
http://somesuperlongstring.mydomain.com/somedirectory/index.html?commonHelpLocation=http://someothersuperlongstring.somedomain.com/help/index.html
因此,location.search返回:http://someothersuperlongstring.somedomain.com/help/index.html
但是函数也会返回相同的字符串,但正则表达式应该只返回?commonHelpLocation=http://someothersuperlongstring.somedomain.com/help/index.html
我的正则表达式有问题吗?
答案 0 :(得分:5)
?
是regexp中的量词。你应该逃避它:
/^\?commonHelpLocation=/
要检查您是否在新页面上(并停止重新加载),请执行相同的正则表达式,仅使用test
函数:
if (/^\?commonHelpLocation=/.test(location.search)) { /* reload */ }
答案 1 :(得分:5)
我的正则表达式有问题吗?
是的,?
是正则表达式保留字符。您需要为文字?
转义它。
var queryString = location.search.replace(/^\?commonHelpLocation=/, '');