浅谈 js 字符串 search 方法


 

这是一个很久以前的事情了,好像是安心兄弟在学习js的时候做的练习。

具体记不清了,今天就来简单分析下 search 究竟是什么用的。

从字面意思理解,一个是搜索字符串吧。

1
2
var  str =  "123456789abcde" ;
console.log( str.search( "abc" ) );  // 9

确实是搜索指定字符在一个字符串中出现的位置,如果不存在就返回 -1
可是这样就跟 indexOf 功能一样了,何必单独搞一个 search 出来呢?

1
2
3
4
5
var  str =  "123456789abcde" ;
console.log( str.search( "abc" ) );  // 9
console.log( str.indexOf( "abc" ) );  // 9
console.log( str.search( "xxx" ) );  // -1
console.log( str.indexOf( "xxx" ) );  // -1

点击右侧运行可查看输出结果。

其实区别在于 search 是强制正则的,而 indexOf 只是按字符串匹配的。
来看一个例子:

1
2
3
4
5
6
7
var  str =  "123456789.abcde" // 比刚才多了一个 . 而已
console.log( str.search( "." ) );     // 0  因为正则 . 匹配除\n以外任意字符
console.log( str.indexOf( "." ) );    // 9  只能匹配字符 .
console.log( str.search( "\\." ) );   // 9  相当于 new RegExp("\\.")
console.log( str.indexOf( "\\." ) );  // -1 匹配字符 \. 所以不存在
console.log( str.search(/\./) );    // 9  正则匹配转以后的 . 字符
console.log( str.indexOf(/\./) );   // -1 相当于匹配字符串 "/\./" 所以不存在

这个例子可以很好的说明 search 强制正则匹配模式。
来看下 MDN 上是怎么说的吧《String.prototype.search()
可以看到他给出的语法是 str.search(regexp) 格式,说明参数必须是正则,如果不是正则,也会调用 new RegExp(obj) 转为正则的。

好了,今天的分享就这些了。明天见。。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM