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

如何检测URL是否同时包含lol和12并返回true?

检测URL是否同时包含lol和12的正确方法

我来帮你梳理下这个问题,然后给出靠谱的解决方案~你的核心需求是判断当前路由URL同时包含lol和12这两个子串,而不是检查是否包含loltest12或loldev12这两个特定字符串对吧?你之前的代码存在两处关键问题:一是逻辑方向错了(用||表示“或”,但你需要的是“且”),二是indexOf返回的是索引而非布尔值,直接用逻辑运算符会导致判断偏差。

下面是两种可靠的实现方式:

方法一:使用indexOf做双重条件判断

这种方式直观易懂,适合简单的子串检查场景:

// 同时验证两个子串是否都存在于URL中
const hasRequiredStrings = this.router.url.indexOf('lol') !== -1 && this.router.url.indexOf('12') !== -1;
// 结果会是true(同时包含)或false(缺少任意一个)
console.log(hasRequiredStrings);

原理:indexOf找到子串时返回它的起始索引(非负数),找不到则返回-1,我们需要用&&确保两个子串的检查结果都不等于-1,也就是“同时满足”的逻辑。

方法二:使用正则表达式(更简洁)

如果想让代码更紧凑,可以用正则的正向预查来确保两个子串都存在(顺序不影响匹配):

// 正则规则:确保URL同时包含lol和12
const checkRegex = /(?=.*lol)(?=.*12)/;
const hasRequiredStrings = checkRegex.test(this.router.url);
console.log(hasRequiredStrings);

如果需要忽略大小写(比如URL里出现LOL或12的大写形式也需要匹配),可以给正则加上i标志:

const checkRegex = /(?=.*lol)(?=.*12)/i;

为什么你的原代码不符合需求?

你的代码local = this.router.url.indexOf('loltest12') || this.router.url.indexOf('loldev12');有两个明显问题:

  1. 逻辑错误:||表示“或”,只要其中一个特定字符串存在就会返回对应索引,但你需要的是“同时包含lol和12”,不是“包含其中一个固定字符串”。
  2. 返回值处理错误:indexOf返回的是数字,当第一个匹配项在URL开头(索引0)时,0在JS中会被视为假值,导致代码会去执行第二个indexOf,最终结果可能是索引或-1,不是你需要的布尔值true/false。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:28:54