二维码

JavaScript String Search

JavaScript String Search

String Search Methods

  • String indexOf()
  • String lastIndexOf()
  • String search()
  • String match()
  • String matchAll()
  • String includes()
  • String startsWith()
  • String endsWith()

JavaScript String indexOf()

indexOf()该方法返回索引(位置) 字符串中第一次出现字符串:

1
2
let text = "Please locate where 'locate' occurs!";  
let index = text.indexOf("locate");

注意

JavaScript 从零开始计算位置。

0 是 字符串,1 是第二个,2 是第三个,…


JavaScript String lastIndexOf()

lastIndexOf()该方法返回字符串中指定文本的最后一次出现的索引

1
2
let text = "Please locate where 'locate' occurs!";  
let index = text.lastIndexOf("locate");

indexOf()``lastIndexOf()和 return -1 如果未找到文本:

1
2
let text = "Please locate where 'locate' occurs!";  
let index = text.lastIndexOf("John");

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

1
2
let text = "Please locate where 'locate' occurs!";  
let index = text.indexOf("locate", 15);

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

1
2
let text = "Please locate where 'locate' occurs!";  
text.lastIndexOf("locate", 15);


JavaScript String search()

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

1
2
let text = "Please locate where 'locate' occurs!";  
text.search("locate");

1
2
let text = "Please locate where 'locate' occurs!";  
text.search(/locate/);


你注意到了吗?

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

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

这两种方法并不相等。这些是区别:

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

您将了解更多 正则表达式将在后面的章节中介绍。


JavaScript String match()

match()该方法返回一个包含匹配结果的数组 针对字符串(或正则表达式)的字符串。

执行“ain”搜索:

1
2
let text = "The rain in SPAIN stays mainly in the plain";  
text.match("ain");

执行“ain”搜索:

1
2
let text = "The rain in SPAIN stays mainly in the plain";  
text.match(/ain/);

对“ain”执行全局搜索:

1
2
let text = "The rain in SPAIN stays mainly in the plain";  
text.match(/ain/g);

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

1
2
let text = "The rain in SPAIN stays mainly in the plain";  
text.match(/ain/gi);

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

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


JavaScript String matchAll()

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

1
const iterator = text.matchAll("Cats");  

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

1
const iterator = text.matchAll(/Cats/g);  

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

1
const iterator = text.matchAll(/Cats/gi);  

笔记

matchAll() [ES2020]的一项功能。

matchAll()在 Internet Explorer 中不起作用。


JavaScript String includes()

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

否则返回 .false

检查字符串是否包含“world”:

1
2
let text = "Hello world, welcome to the universe.";  
text.includes("world");

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

1
2
let text = "Hello world, welcome to the universe.";  
text.includes("world", 12);

笔记

includes()区分大小写。

includes()是 [ES6 的一项功能]

includes()在 Internet Explorer 中不受支持。


JavaScript String startsWith()

如果字符串以指定值开头,则startsWith()该方法返回:true

否则返回:false

返回 true:

1
2
let text = "Hello world, welcome to the universe.";  
text.startsWith("Hello");

返回 false:

1
2
let text = "Hello world, welcome to the universe.";  
text.startsWith("world")

可以指定Search的起始位置:

返回 false:

1
2
let text = "Hello world, welcome to the universe.";  
text.startsWith("world", 5)

返回 true:

1
2
let text = "Hello world, welcome to the universe.";  
text.startsWith("world", 6)

笔记

startsWith()区分大小写。

startsWith()是 [ES6 的一项功能]

startsWith()在 Internet Explorer 中不受支持。


JavaScript String endsWith()

如果字符串以指定值结尾,则endsWith()该方法返回:true

否则返回:false

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

1
2
let text = "John Doe";  
text.endsWith("Doe");

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

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

笔记

endsWith()区分大小写。

endsWith()是 [ES6 的一项功能]

endsWith()在 Internet Explorer 中不受支持。