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

为何字符串.includes()无法匹配小写?如何兼容URL大小写关键词

解决URL中recordId/recordid大小写兼容检测问题

核心问题分析

原代码用String.includes()做关键词检测,以及正则匹配参数名时都是区分大小写的,导致小写recordid无法被识别。要实现大小写兼容,需要从关键词检测和参数提取两个环节修改:

修改方案及代码

  1. 替换区分大小写的includes方法,改用带忽略大小写标志的正则检测
  2. 给参数提取的正则添加i标志,确保匹配参数名时不区分大小写
  3. 顺便修正方法名的拼写错误(原_geRecordId应为_getRecordId)

修改后的完整代码:

if(url && /recordId/i.test(url) && /rt/i.test(url)){
  this._getRecordId(url);
} 

private async _getRecordId(url){
  const linkedId = this._getURLValue('recordId', url);
  if(!linkedId){
    return;
  }
  // 这里可以添加拿到recordId后的业务逻辑
}

private _getURLValue(name, url) {
  if (!url) url = location.href;
  name = name.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");
  var regexS = "[\\;]"+name+"=([^;]*)";
  // 加入'i'标志,开启忽略大小写匹配
  var regex = new RegExp(regexS, 'i');
  var results = regex.exec(url);
  return results == null ? null : results[1];
}

关键修改说明

  • 关键词检测:/recordId/i.test(url)中的i标志让正则忽略大小写,不管URL里是recordId还是全小写的recordid都能匹配到;rt的检测同理。
  • 参数提取:创建RegExp时传入第二个参数'i',这样正则匹配参数名时就不会区分大小写,能正确提取recordid=xxx或recordId=xxx对应的值。
  • 方法名修正:原代码里的_geRecordId是笔误,改成_getRecordId避免调用时出现方法不存在的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:13:21