JavaScript indexOf 方法详解与大小写忽略扩展实现

作者:木棉

时间:2026-10-22

浏览:460

本文详细介绍JavaScript中indexOf方法的语法结构、参数含义及返回值规则,重点解析其区分大小写的特性。通过示例展示如何利用toLowerCase进行简单处理,并深入分析两种网络流传的忽略大小写查找扩展方案,包括正则匹配与兼容原有行为的实现逻辑,帮助开发者灵活处理字符串定位需求。

文章目录

indexOf方法基础语法与参数说明

调用语法为:strObj.indexOf(str, startIndex[可选])



程序代码



其中strObj是必选项,代表String对象或字符串字面量。


str是必选项,表示需要在String对象中查找的目标子字符串。


startIndex是可选项,为一个整数值,指定在String对象内开始查找的起始位置,索引从0开始。若省略该参数,则默认从字符串起始位置开始查找。




注意:JavaScript的indexOf方法严格区分大小写。



JavaScript中indexOf方法返回一个整数值,表示String对象内子字符串的起始位置。若未找到匹配的字符串,则返回-1。若startIndex为负数,则将其视为0;若startIndex大于字符串最大字符位置索引,则将其视为最大可能索引。



indexOf函数的查找方向是从左向右执行。


以下示例演示了indexOf方法的基本用法。



基本用法示例

程序代码



var str1="fdiejDIFADF";


var str="e";


var i=str1.indexOf(str);


alert(i);





前文已提及,indexOf区分大小写,这有时会带来不便。最简单的解决方式是将字符通过toLowerCase或toUpperCase转换为统一的大小写形式后再进行比较。


代码如下:



忽略大小写的简单处理方案

程序代码



<script>


var Str = 'ABCDEF';


var Str1 = 'bcd';


alert(Str.toLowerCase().indexOf(Str1.toLowerCase()));


str2 = 'AbCdEf';


alert(Str2.toLowerCase().indexOf(Str1.toLowerCase()));


</script>





下面介绍一种利用正则表达式对indexOf进行扩展的方法(源自网络)。



基于正则的indexOf扩展实现

程序代码



<script>


String.prototype.indexOf = function(f,m){


var mm = (m == false) ? "i":"";


var re = eval("/"+ f +"/"+mm);


var rt = this.match(re);


return (rt == null) ? -1:rt.index;


}

var test = "absnegKIugfkalg";


alert(test.indexOf("kiu",false));


</script>





下面的扩展功能更为强大,它兼容原有的indexOf函数行为,同时支持忽略大小写的查找(同样源自网络)。



兼容原有行为的增强型扩展

程序代码



<script language="javascript">


String.prototype._indexOf = String.prototype.indexOf;


String.prototype.indexOf = function()


{

if(typeof(arguments[arguments.length - 1]) != 'boolean')


return this._indexOf.apply(this,arguments);


else


        {

var bi = arguments[arguments.length - 1];


var thisObj = this;


var idx = 0;


if(typeof(arguments[arguments.length - 2]) == 'number')


                {

idx = arguments[arguments.length - 2];


thisObj = this.substr(idx);


                }

var re = new RegExp(arguments[0],bi?'i':'');


var r = thisObj.match(re);


return r==null?-1:r.index + idx;


        }
}

alert("bcssssasdfsdf".indexOf('A',3,true));


alert("bcssssasdfsdf".indexOf('a',3));


</script>


实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章