抛开可读性不谈,在使用以下代码之间是否存在明显的差异(可能是性能
str.indexOf("src")
和
str.match(/src/)
我个人更喜欢match
(和regexp),但同事们似乎走了另一条路。我们想知道这有没有关系...?
编辑:
我应该在一开始就说过,这是用于执行部分普通字符串匹配(在JQuery的类属性中提取标识符)的函数,而不是使用通配符等进行完整正则表达式搜索的函数。
class='redBorder DisablesGuiClass-2345-2d73-83hf-8293'
所以这是两者之间的区别:
string.indexOf('DisablesGuiClass-');
和
string.match(/DisablesGuiClass-/)
发布于 2011-01-21 18:06:58
RegExp确实比indexOf慢(你可以在here上看到它),尽管通常这不是问题。使用RegExp时,您还必须确保字符串被正确转义,这是需要考虑的额外问题。
把这两个问题放在一边,如果两个工具都能做你需要的事情,为什么不选择更简单的那个呢?
发布于 2011-01-21 18:02:44
从理论上讲,当您只是搜索一些纯文本时,使用indexOf
应该比使用正则表达式更快,但是如果您关心性能,您应该自己做一些比较基准测试。
如果你更喜欢match
,而且它的速度足以满足你的需求,那就去试试吧。
不管它有什么价值,我同意你的同事的观点:我在搜索普通字符串时会使用indexOf
,只有在需要正则表达式提供的额外功能时才会使用match
等。
发布于 2017-03-20 22:57:49
请记住,Internet Explorer8不支持indexOf
。但是如果你的用户中没有人使用ie8 (谷歌分析会告诉你),那么就省略这个答案。修复ie8的可能解决方案:How to fix Array indexOf() in JavaScript for Internet Explorer browsers
https://stackoverflow.com/questions/4757438
复制相似问题