JavaScript 判断字符串包含子串的五种方法详解
本文详细介绍 JavaScript 中判断字符串是否包含子串的多种实现方式,包括 indexOf、lastIndexOf、includes、search 以及正则表达式匹配。重点对比 ES5 与 ES6 方法的性能差异、返回值类型及兼容性处理,并提供 lodash 库的替代方案,帮助开发者根据实际需求选择最优解。
indexOf方法
依据国外技术人员的测试数据,indexOf 方法在执行速度上通常表现最佳,因此在日常开发中建议优先采用该方法。
ES5或者更老版本
String.prototype.indexOf 方法用于返回子字符串在原字符串中首次出现的位置索引;若未找到匹配项,则返回 -1。
代码如下:
var string = "foo",
substring = "oo";
string.indexOf(substring) !== -1;//true若需频繁执行此类判断,可封装为独立函数以提高代码复用性。
function instr(str, find) {
if (str.indexOf(find) != -1) {
return 1;
} else {
return 0;
}
}string.lastIndexOf()
该方法与 indexOf 类似,主要区别在于它从字符串末尾向前搜索。
返回值:匹配成功的第一个字符的下标,未匹配则返回-1
用法:string.indexOf(searchValue, start)
let searchVal = 'yyds'
let searchResult = searchVal.lastIndexOf('y')
console.log(searchResult) // 1
ES6 includes 方法
返回值:Boolean
用法: string.includes(searchValue, start) 第二个参数从是指定下标开始查找
兼容补丁(polyfill)
if (!String.prototype.includes) {
String.prototype.includes = function(search, start) {
'use strict';
if (typeof start !== 'number') {
start = 0;
}
if (start + search.length > this.length) {
return false;
} else {
return this.indexOf(search, start) !== -1;
}
};
}示例
var str = 'To be, or not to be, that is the question.';
console.log(str.includes('To be')); // true
console.log(str.includes('question')); // true
console.log(str.includes('nonexistent')); // false
console.log(str.includes('To be', 1)); // false
console.log(str.includes('TO BE')); // false当包含时返回true,不包含时返回false,代码实例如下:
var string = "foo";
var substring1 = "oo";
var substring2 = "oq";
string.includes(substring1); //true
string.includes(substring2); //false let searchVal = 'yyds'
let searchResult = searchVal.includes('y', 1)
console.log(searchResult) // true
string.search()
定义和用法
search() 方法将字符串与正则表达式进行匹配。
注释:如果搜索值为字符串,则转换为正则表达式。
search() 方法返回第一个匹配项的索引(位置)。
如果未找到匹配项,则 search() 方法返回 -1。
提示:search() 方法区分大小写。
返回值:匹配成功的第一个字符的下标,未匹配则返回-1
用法:string.search(searchValue)
search方法与indexOf类似,用来返回一个字符串在另一个字符串中的位置,如果没找到那就返回-1,。
唯一需要注意的是,search方法的参数是一个正则表达式。
代码如下:
var string = "foo",
expr = /oo/;
string.search(expr);// 返回1 let searchVal = 'yyds'
let searchResult = searchVal.search('y')
console.log(searchResult) // 0
不区分大小写的搜索
let text = "Mr. Blue has a blue house";
let position = text.search(/blue/i);lodash includes方法
使用Javascript工具库lodash的includes方法,该方法返回一个布尔值,代码如下:
_.includes('foobar', 'ob');
// → trueRegExp正则表达式
使用正则表达式的match来判断是否包含,代码如下:
var string = "foo",
expr = /oo/; // no quotes here
expr.test(string);//trueMatch方法
使用match的方法,该方法字符串不匹配的话就返回null,代码如下:
var string = "foo",
expr = /oo/,
expr2 = /oa/;
string.match(expr);//["oo", index: 1, input: "foo", groups: undefined]
string.match(expr2);//null到此这篇关于js 判断字符串中是否包含某个字符串的实现代码的文章就介绍到这了,更多相关字符串中是否包含某个字符串内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
