在JavaScript中,indexOf()和search()之间有什么区别?

Col*_*ock 175 javascript string

作为JavaScript的新手,我无法辨别何时使用这些.

任何人都可以帮我澄清一下吗?

小智 205

如果需要正则表达式,请使用search().否则,indexOf()会更快.

  • 任何提及支持这项索赔? (30认同)
  • @ cregox的评论很重要 - 尝试`"你好.".search(".")` - 它返回0而不是5,因为`.`是"任何字符"的正则表达式标记 (22认同)
  • 此外,即使您不想,`search`也会将字符串计算为正则表达式. (15认同)
  • 'hello'.indexOf(未定义)返回-1,'hello'.search(未定义)返回0 (3认同)

Gre*_*reg 31

indexOf对于普通的子串,search可以做正则表达式.


joe*_*ely 14

搜索函数(这里的一个描述)采用正则表达式,它允许您匹配更复杂的模式,不区分大小写的字符串等,而indexOf(此处的一个描述)只是匹配文字字符串.但是,indexOf还允许您指定开始索引.


小智 8

indexOf() 和 search()

  • 两者共同

    i) 返回第一次出现的搜索值

    ii) 如果未找到匹配项,则返回 -1

    let str='Book is booked for delivery'
    str.indexOf('b')   // returns position 8
    str.search('b')    // returns position 8 
    
    Run Code Online (Sandbox Code Playgroud)

  • 特殊在 indexOf()

    i) 您可以将起始搜索位置作为第二个参数

    str.indexOf('k')   // 3
    str.indexOf('k',4) // 11 (it start search from 4th position) 
    
    Run Code Online (Sandbox Code Playgroud)

  • 特殊搜索()

搜索值可以是正则表达式

str.search('book') // 8
str.search(/book/i)  // 0   ( /i =case-insensitive   (Book == book)
Run Code Online (Sandbox Code Playgroud)

参考


CMS*_*CMS 7

我认为主要区别在于搜索接受正则表达式.

检查此参考: