JavaScript函数location.search正则表达式帮助

时间:2011-07-12 21:03:07

标签: javascript html regex

我在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

我的正则表达式有问题吗?

2 个答案:

答案 0 :(得分:5)

?是regexp中的量词。你应该逃避它:

/^\?commonHelpLocation=/

要检查您是否在新页面上(并停止重新加载),请执行相同的正则表达式,仅使用test函数:

if (/^\?commonHelpLocation=/.test(location.search)) { /* reload */ }

答案 1 :(得分:5)

  

我的正则表达式有问题吗?

是的,?是正则表达式保留字符。您需要为文字?转义它。

var queryString = location.search.replace(/^\?commonHelpLocation=/, '');