使用javascript和regex获取查询字符串

时间:2012-02-26 02:09:16

标签: javascript jquery regex url query-string

我会得到我的网址:

http://mysite.com/results.aspx?s=bcs&k=“医院”或“办公室”或“设施”

我想在'k ='之后抓住所有内容,排除'k ='本身..

这个正则表达式部分工作..但它用k抓取所有东西两次..

    <script type="text/javascript">
document.write('<p>Showing Results for all' + 
window.location.href.match(/[?&]k=([^&#]+)/) || [] + '</p>');
</script>

3 个答案:

答案 0 :(得分:1)

match正在返回两个元素。第一个是整个正则表达式的匹配。第二个元素是捕获组(()内)。这就是你想要的,数组中的第二个元素。

<script type="text/javascript">
    var result = window.location.href.match(/[?&]k=([^&#]+)/);

    var word = "";

    if(result) word = result[1];
</script>

http://jsfiddle.net/7WcMc/

答案 1 :(得分:0)

这应该有效:

var match = location.href.match(/\&k\=(.+)/)[1];

http://jsfiddle.net/elclanrs/2aPCh/1/

答案 2 :(得分:0)

Javascript match函数在成功时返回匹配数组,如果没有找到匹配则返回null。

在你的情况下,第一场比赛是匹配的整个字符串,第二场是([^&amp;#] +)的反向引用

以这种方式可能更好:

<script type="text/javascript">
    var m = window.location.href.match(/[?&]k=([^&#]+)/);
    document.write('<p>Showing Results for all' + ((m != null) ? m[1] : '') ++ '</p>');
</script>