javascript中查找字符串位置最常用indexof()和lastindexof(),分别返回首次和末次匹配索引;search()支持正则定位;includes()等es6方法用于存在性判断。

JavaScript 中查找字符串位置,最常用的是 indexOf() 和 lastIndexOf(),它们返回匹配子串首次或末次出现的索引;ES6 新增的 includes()、startsWith()、endsWith() 虽不返回位置,但常配合使用来判断存在性;而 search() 支持正则,适合更灵活的定位需求。
indexOf():找第一次出现的位置
从左往右搜索,返回第一个匹配项的起始索引,没找到返回 -1。它区分大小写,且只支持子字符串,不支持正则。
- 语法:
str.indexOf(searchValue, fromIndex),fromIndex可选,默认为 0 - 例如:
"hello world".indexOf("o")返回 4;"hello world".indexOf("o", 5)返回 7 - 注意:空字符串
""在任意位置都匹配,"abc".indexOf("")总是返回 0
lastIndexOf():找最后一次出现的位置
从右往左搜索,返回最后一个匹配项的起始索引,同样区分大小写,不支持正则。
- 语法:
str.lastIndexOf(searchValue, fromIndex),fromIndex是搜索的上限位置(含),默认为字符串长度减 1 - 例如:
"hello world".lastIndexOf("o")返回 7;"hello world".lastIndexOf("o", 6)返回 4 - 注意:如果
fromIndex超出范围(如负数或大于等于字符串长度),会自动截断为有效值再搜索
search():用正则表达式定位
只返回第一个匹配项的索引,不支持全局标志 g(即使写了也忽略),不接受字符串参数(传字符串会被转成正则字面量)。
- 语法:
str.search(regexp),regexp必须是正则对象或字面量 - 例如:
"abc123def".search(/\d+/)返回 3;"Hello".search(/h/i)返回 0(因i标志忽略大小写) - 注意:没匹配时也返回 -1;无法获取捕获组信息,仅用于定位
配合 slice 或 substring 做进一步操作
拿到位置后,常结合 slice()、substring() 或 substr()(已废弃)提取内容。
- 比如提取 “https://” 后的域名:
const url = "https://example.com"; const start = url.indexOf("://") + 3; const domain = url.slice(start); - 替换某段内容时,可用位置拆分字符串:
const i = str.indexOf("old"); if (i !== -1) str = str.slice(0, i) + "new" + str.slice(i + "old".length); - 避免直接用
substr(),推荐slice()(支持负数索引)或substring()(自动交换参数顺序)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











