JavaScript 检查字符串是否包含子串的三种方法

小鹿同学
小鹿同学
发布时间:2026-10-15 | 6人浏览过
原创

在 JavaScript 开发中,检测一个字符串是否包含特定的子字符串是高频需求。本文将深入解析三种主流实现方式:ES6 标准库中的 includes()、传统兼容方法 indexOf() 以及功能强大的正则表达式,并提供代码示例与适用场景建议。

为什么需要检测字符串包含关系

在任何前端或后端逻辑中,验证用户输入、过滤文本内容或匹配规则都离不开字符串检测。例如,在构建在线游戏时,需要确保用户名不包含禁止使用的敏感短语;或在处理表单时,验证邮箱地址是否符合规范格式。准确且高效地识别子字符串能显著提升代码的健壮性。

第1步:使用 ES6 方法 includes()

includes() 是 ES6 引入的方法,旨在提供一种语义更清晰的布尔值返回方式。它用于确定一个字符串是否在另一个字符串中包含指定的字符序列,若存在则返回 true,否则返回 false。

语法结构:

string.includes(searchString [, position])
  • searchString:必需。需搜索的子字符串。
  • position:可选。指定从字符串的哪个索引位置开始搜索。默认为 0。

基础应用示例:

let example = "Example String!";
let ourSubstring = "Example";

if (example.includes(ourSubstring)) {
    console.log("The word Example is in the string.");
} else {
    console.log("The word Example is not in the string.");
}

关键特性与注意事项:

  1. 区分大小写:includes() 对大小写敏感。如果搜索目标的大小写与原字符串不匹配,将直接返回 false。
  2. 起始索引控制:可以通过第二个参数限制搜索范围。由于索引从 0 开始,若设置起始位置超过子字符串存在的区域,即使内容相同也会判定为不存在。

第2步:使用传统方法 indexOf()

在 ES6 普及之前,indexOf() 是检测字符串包含关系的唯一标准方式。它与 includes() 的核心区别在于返回值类型:它返回子字符串首次出现的索引位置,若未找到则返回 -1。

语法结构:

string.indexOf(searchValue [, fromIndex])

应用示例:

let example = "Example String!";
let ourSubstring = "Example";

// 通过判断返回值是否为 -1 来确定是否存在
if (example.indexOf(ourSubstring) != -1) {
    console.log("The word Example is in the string.");
} else {
    console.log("The word Example is not in the string.");
}

进阶参数用法:

和 includes() 一样,indexOf() 也支持第二个参数用于指定搜索起点。这在进行局部字符串匹配或性能优化时有用。

第3步:使用正则表达式 Regex

对于复杂模式匹配,正则表达式提供了最大的灵活性。可以使用 RegExp.test() 方法快速检测字符串中是否存在符合规则的子串。

应用示例:

let str = "Example String!"; 
/Example/.test(str); // 返回 true

优缺点分析:

  • 优点:支持模糊匹配、忽略大小写(通过标志位 /i)以及复杂的字符组合。
  • 缺点:对于简单的固定字符串检测,正则表达式的编写难度较高,且在某些情况下执行效率低于原生字符串方法。不建议初学者在未掌握正则语法的场景下盲目使用。

三种方法对比总结

方法 返回值类型 区分大小写 ES5 兼容性
includes() Boolean (true/false) 是 否 (需 ES6+)
indexOf() Number (索引/-1) 是 是 (全兼容)
Regex.test() Boolean (true/false) 可配置 是 (全兼容)

总体而言,如果是现代项目且仅需简单检测,推荐使用 includes(),因为其语义最直观。若需兼容老旧浏览器或需要获取子串位置信息,则应选择 indexOf()。涉及复杂模式验证时,再考虑正则表达式。

以上就是JavaScript检查字符串是否包含子串详细内容的介绍,更多关于JavaScript字符串操作的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表