【问题标题】:get querystring using javascript and regex使用 javascript 和正则表达式获取查询字符串
【发布时间】:2012-02-26 02:09:16
【问题描述】:
我的网址是这样的:
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>
【问题讨论】:
标签:
javascript
jquery
regex
url
query-string
【解决方案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/
【解决方案3】:
Javascript 匹配函数在成功的情况下返回一个匹配数组,如果没有找到匹配则返回 null。
在您的情况下,第一个匹配是匹配的整个字符串,第二个是对 ([^]+) 的反向引用
这样可能更好:
<script type="text/javascript">
var m = window.location.href.match(/[?&]k=([^&#]+)/);
document.write('<p>Showing Results for all' + ((m != null) ? m[1] : '') ++ '</p>');
</script>