目录

JavaScript 字符串搜索

字符串搜索方法

  • 字符串索引()
  • 字符串最后索引()
  • 字符串搜索()
  • 字符串匹配()
  • 字符串matchAll()
  • 字符串包含()
  • 字符串开始于()
  • 字符串以()结束

JavaScript 字符串indexOf()

这个indexOf()方法返回指数(位置)第一的字符串中某个字符串的出现次数:

示例

let text = "Please locate where 'locate' occurs!";
let index = text.indexOf("locate");
亲自试一试 »

笔记

JavaScript 从零开始计算位置。

0 是字符串中的第一个位置,1 是第二个位置,2 是第三个位置,...


JavaScript 字符串 lastIndexOf()

这个lastIndexOf()方法返回指数最后的字符串中指定文本的出现:

示例

let text = "Please locate where 'locate' occurs!";
let index = text.lastIndexOf("locate");
亲自试一试 »

两个都indexOf(), 和lastIndexOf()如果未找到文本,则返回 -1:

示例

let text = "Please locate where 'locate' occurs!";
let index = text.lastIndexOf("John");
亲自试一试 »

两种方法都接受第二个参数作为搜索的起始位置:

示例

let text = "Please locate where 'locate' occurs!";
let index = text.indexOf("locate", 15);
亲自试一试 »

这个lastIndexOf()方法向后搜索(从末尾到开头),意思是:如果第二个参数是15,搜索从位置 15 开始,搜索到字符串的开头。

示例

let text = "Please locate where 'locate' occurs!";
text.lastIndexOf("locate", 15);
亲自试一试 »

JavaScript 字符串搜索()

这个search()方法在字符串中搜索字符串(或正则表达式)并返回匹配的位置:

示例

let text = "Please locate where 'locate' occurs!";
text.search("locate");
亲自试一试 »
let text = "Please locate where 'locate' occurs!";
text.search(/locate/);
亲自试一试 »

你注意到了吗?

这两种方法,indexOf()search(), 是相等?

他们接受相同的参数(参数),并返回相同的值?

这两种方法是不是相等。这些是差异:

  • 这个search()方法不能采用第二个起始位置参数。
  • 这个indexOf()方法不能采用强大的搜索值(正则表达式)。

您将在后面的章节中了解有关正则表达式的更多信息。



JavaScript 字符串匹配()

这个match()方法返回一个数组,其中包含字符串与字符串(或正则表达式)的匹配结果。

示例

搜索"ain":

let text = "The rain in SPAIN stays mainly in the plain";
text.match("ain");
亲自试一试 »

搜索"ain":

let text = "The rain in SPAIN stays mainly in the plain";
text.match(/ain/);
亲自试一试 »

对 "ain" 执行全局搜索:

let text = "The rain in SPAIN stays mainly in the plain";
text.match(/ain/g);
亲自试一试 »

对 "ain" 执行全局、不区分大小写的搜索:

let text = "The rain in SPAIN stays mainly in the plain";
text.match(/ain/gi);
亲自试一试 »

笔记

如果正则表达式不包含G修饰符(全局搜索),match()将仅返回字符串中的第一个匹配项。

在本章中阅读有关正则表达式的更多信息JS 正则表达式


JavaScript 字符串 matchAll()

这个matchAll()方法返回一个迭代器,其中包含字符串与字符串(或正则表达式)的匹配结果。

示例

const iterator = text.matchAll("Cats");
亲自试一试 »

如果参数是正则表达式,则必须设置全局标志 (g),否则会抛出 TypeError。

示例

const iterator = text.matchAll(/Cats/g);
亲自试一试 »

如果要搜索不区分大小写,则必须设置不敏感标志 (i):

示例

const iterator = text.matchAll(/Cats/gi);
亲自试一试 »

笔记

matchAll()是一个ES2020特征。

matchAll()不适用于 Internet Explorer。


JavaScript 字符串包含()

这个includes()如果字符串包含指定值,则方法返回 true。

否则返回false

示例

检查字符串是否包含"world":

let text = "Hello world, welcome to the universe.";
text.includes("world");
亲自试一试 »

检查字符串是否包含"world"。从位置 12 开始:

let text = "Hello world, welcome to the universe.";
text.includes("world", 12);
亲自试一试 »

笔记

includes()区分大小写。

includes()是一个ES6 特性

includes()Internet Explorer 不支持。


JavaScript 字符串startsWith()

这个startsWith()方法返回true如果字符串以指定值开头。

否则返回false

示例

返回真:

let text = "Hello world, welcome to the universe.";
text.startsWith("Hello");
亲自试一试 »

返回错误:

let text = "Hello world, welcome to the universe.";
text.startsWith("world")
亲自试一试 »

可以指定搜索的起始位置:

返回错误:

let text = "Hello world, welcome to the universe.";
text.startsWith("world", 5)
亲自试一试 »

返回真:

let text = "Hello world, welcome to the universe.";
text.startsWith("world", 6)
亲自试一试 »

笔记

startsWith()区分大小写。

startsWith()是一个ES6 特性

startsWith()Internet Explorer 不支持。


JavaScript 字符串结束()

这个endsWith()方法返回true如果字符串以指定值结尾。

否则返回false

示例

检查字符串是否以 "Doe" 结尾:

let text = "John Doe";
text.endsWith("Doe");
亲自试一试 »

检查字符串的前 11 个字符是否以 "world" 结尾:

let text = "Hello world, welcome to the universe.";
text.endsWith("world", 11);

亲自试一试 »

笔记

endsWith()区分大小写。

endsWith()是一个ES6 特性

endsWith()Internet Explorer 不支持。


完整的字符串参考

有关完整的字符串参考,请访问我们的:

完整的 JavaScript 字符串参考.

该参考包含所有字符串属性和方法的描述和示例。