1. 程式人生 > 實用技巧 >淺談 js 字串 search 方法

淺談 js 字串 search 方法

這是一個很久以前的事情了,好像是安心兄弟在學習js的時候做的練習。

具體記不清了,今天就來簡單分析下search究竟是什麼用的。

從字面意思理解,一個是搜尋字串吧。

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

確實是搜尋指定字元在一個字串中出現的位置,如果不存在就返回 -1
可是這樣就跟indexOf功能一樣了,何必單獨搞一個search出來呢?

1 2 3 4 5 varstr ="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 varstr ="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) 轉為正則的。

好了,今天的分享就這些了。明天見。。