You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中URL分页参数非数字时重定向及引号字符类型判断

问题解答

问题1:如何判断引号包裹字符的类型?

针对引号包裹的字符串内容,可通过以下方式判断其实际类型:

  • 判断是否为数字:
    可以通过类型转换结合isNaN()校验,或用正则匹配纯数字(支持整数、浮点数):
    const str = "123.45";
    // 方法1:转换后校验
    const isNumber = !isNaN(Number(str)) && typeof Number(str) === 'number';
    // 方法2:正则匹配
    const numberRegex = /^-?\d+(\.\d+)?$/;
    const isNumber = numberRegex.test(str);
    
  • 判断是否为布尔值:
    直接比对字符串是否为"true"或"false"(注意大小写匹配):
    const str = "false";
    const isBoolean = str === "true" || str === "false";
    
  • 判断是否为普通字符串:
    排除上述数字、布尔值的情况后,即可判定为普通文本字符串。

问题2:URL分页参数的数字校验与重定向

你遇到的报错是因为JSON.parse(queries.page)的使用逻辑错误:URL参数page=g对应的queries.page是字符串"g",而JSON.parse要求输入为合法JSON格式——比如解析字符串类型的JSON值需要传入带双引号的内容(如JSON.parse('"g"')),直接传"g"会触发语法错误。

推荐两种简洁安全的校验方案:

方案1:类型转换结合整数校验

分页参数通常为正整数,转换后校验是否为有效整数:

const pageParam = queries.page;
const pageNum = Number(pageParam);
// 校验:是数字、是整数、且大于0
if (isNaN(pageNum) || !Number.isInteger(pageNum) || pageNum <= 0) {
  // 重定向到目标路径,比如默认第一页
  window.location.href = '/posts?page=1';
} else {
  // 执行正常分页逻辑
}

方案2:正则匹配正整数

用正则直接精准匹配合法的分页参数格式:

const pageParam = queries.page;
const positiveIntRegex = /^[1-9]\d*$/;
if (!positiveIntRegex.test(pageParam)) {
  window.location.href = '/posts?page=1';
} else {
  const pageNum = parseInt(pageParam, 10);
  // 执行正常分页逻辑
}

内容的提问来源于stack exchange,提问作者Mahmoud Mirzaei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 09:07:21