淺談 js 字串 search 方法
阿新 • • 發佈:2020-11-29
這是一個很久以前的事情了,好像是安心兄弟在學習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) 轉為正則的。
好了,今天的分享就這些了。明天見。。