[?&]key(=([^&#]*)|&|#|$)
这段匹配 url 查询参数的正则,后面的 |&|#|$
是什么意思?我把它去掉也可以匹配成功
来源
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, '\\$&');
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
标签选了这么多。不知道你用的是什么语言。
我说下在
JavaScript
中正则的|
是指或。也就是说
|&|#|$
指匹配以&
或#
结尾(这里的$
指结尾)。推荐一个网址在线正则测试工具 选择
JavaScript
规则:
测试字符串:
这样更有体会。
可能会有一些
&
#
结尾的不是常规的URL
。