本文介绍使用JavaScript通过正则表达式解析URL查询参数的方法。核心代码利用location.search匹配键值对,并采用decodeURI进行解码以替代已废弃的unescape。文章强调在调用时必须对返回值进行非空及长度判断,防止访问不存在的参数时引发运行时错误,确保代码在无参URL下的稳定性。
获取URL参数的核心实现
具体实现代码如下:
/**
获取地址栏参数
*
* @example GetUrlString('id')
*
* @desc 调用时加上判断,保证程序不会出错
* var myurl = GetUrlString('id');
* if (myurl != null && myurl.toString().length > 1) {
* alert(GetUrlString("id"));
* }
*
* @param String param 要获取地址栏中的参数名
* @return String Value
* @type String
*
* @name GetUrlString()
*
*/
function GetUrlString(param) {
var sValue = location.search.match(new RegExp("[\?\&]" + m + "=([^\&]*)(\&?)", "i"));
return sValue ? decodeURI(sValue[1]) : decodeURI(sValue);
}
安全调用与错误处理规范
在调用该函数时,建议统一添加安全检查逻辑。例如,当URL中不包含指定参数(如直接访问 abc.html)时,直接输出结果可能导致异常。通过预先判断返回值,可避免此类错误。
完整的调用示例代码如下:
window.onload = function() {
var myurl = GetParm("id");
if (myurl != null && myurl.toString().length > 1) {
alert(GetParm("id"));
}
}
通过上述判断逻辑,可有效避免程序报错。
注意:ECMAScript v3 已从标准中移除 unescape() 函数并反对使用,建议改用 decodeURI() 和 decodeURIComponent() 进行解码。
读者如有疑问,欢迎留言讨论。