首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript:搜索字符串时indexOf与匹配?

JavaScript:搜索字符串时indexOf与匹配?
EN

Stack Overflow用户
提问于 2011-01-21 17:59:09
回答 3查看 68.1K关注 0票数 72

抛开可读性不谈,在使用以下代码之间是否存在明显的差异(可能是性能

代码语言:javascript
复制
str.indexOf("src") 

代码语言:javascript
复制
str.match(/src/)

我个人更喜欢match (和regexp),但同事们似乎走了另一条路。我们想知道这有没有关系...?

编辑:

我应该在一开始就说过,这是用于执行部分普通字符串匹配(在JQuery的类属性中提取标识符)的函数,而不是使用通配符等进行完整正则表达式搜索的函数。

代码语言:javascript
复制
class='redBorder DisablesGuiClass-2345-2d73-83hf-8293' 

所以这是两者之间的区别:

代码语言:javascript
复制
string.indexOf('DisablesGuiClass-');

代码语言:javascript
复制
string.match(/DisablesGuiClass-/)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-21 18:06:58

RegExp确实比indexOf慢(你可以在here上看到它),尽管通常这不是问题。使用RegExp时,您还必须确保字符串被正确转义,这是需要考虑的额外问题。

把这两个问题放在一边,如果两个工具都能做你需要的事情,为什么不选择更简单的那个呢?

票数 61
EN

Stack Overflow用户

发布于 2011-01-21 18:02:44

从理论上讲,当您只是搜索一些纯文本时,使用indexOf应该比使用正则表达式更快,但是如果您关心性能,您应该自己做一些比较基准测试。

如果你更喜欢match,而且它的速度足以满足你的需求,那就去试试吧。

不管它有什么价值,我同意你的同事的观点:我在搜索普通字符串时会使用indexOf,只有在需要正则表达式提供的额外功能时才会使用match等。

票数 5
EN

Stack Overflow用户

发布于 2017-03-20 22:57:49

请记住,Internet Explorer8不支持indexOf。但是如果你的用户中没有人使用ie8 (谷歌分析会告诉你),那么就省略这个答案。修复ie8的可能解决方案:How to fix Array indexOf() in JavaScript for Internet Explorer browsers

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4757438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档