淺談 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