JS编程建议——47:避免使用正则表达式的场景

简介: 47:避免使用正则表达式的场景

建议47:避免使用正则表达式的场景
正则表达式匹配速度是非常快的。然而,当只搜索文字字符串时正则匹配经常会显得多余,尤其当事先知道了字符串的哪一部分将要被测试时。例如,要检查一个字符串是不是以分号结束,可以使用:
endsWithSemicolon = /;$/.test(str);
当前没有哪个浏览器“聪明”到这个程度,能够意识到这个正则表达式只能匹配字符串的末尾。最终它们所做的将是一个一个地测试整个字符串。每当发现了一个分号,正则表达式就前进到下一个字元($),检查它是否匹配字符串的末尾。如果不是这样,正则表达式就继续搜索匹配,直到搜索了整个字符串。字符串的长度越长(包含的分号越多),它占用的时间也就越长。
在这种情况下,更好的办法是跳过正则表达式所需的所有中间步骤,简单地检查最后一个字符是不是分号:
endsWithSemicolon = str.charAt(str.length – 1) == ";";
目标字符串很小时,这种方法只比正则表达式快一点,更重要的是,字符串的长度不再影响执行测试所需要的时间。
例如,使用charAt 函数在特定位置上读取字符。字符串函数slice、substr和substring 可用于在特定位置上提取并检查字符串的值。此外,indexOf和lastIndexOf 函数非常适合查找特定字符串的位置,或者判断它们是否存在。所有这些字符串操作函数速度都很快,在搜索那些不依赖正则表达式复杂特性的文本字符串时,它们有助于减小正则表达式带来的性能开销。

相关文章
|
4月前
|
存储 JavaScript 前端开发
JavaScript编程实现tab选项卡切换的效果+1
JavaScript编程实现tab选项卡切换的效果+1
|
28天前
纸屑飘落生日蛋糕场景js+css3动画特效
纸屑飘落生日蛋糕CSS3动画特效是一款js+css3制作的全屏纸屑飘落,生日蛋糕点亮庆祝动画特效。
45 3
|
2月前
|
前端开发 JavaScript 持续交付
提高JavaScript编程效率
提高JavaScript编程效率
31 3
|
2月前
|
自然语言处理 JavaScript 前端开发
JavaScript闭包:解锁编程潜能,释放你的创造力
【10月更文挑战第25天】本文深入探讨了JavaScript中的闭包,包括其基本概念、创建方法和实践应用。闭包允许函数访问其定义时的作用域链,常用于数据封装、函数柯里化和模块化编程。文章还提供了闭包的最佳实践,帮助读者更好地理解和使用这一强大特性。
25 2
|
3月前
|
前端开发 JavaScript UED
JavaScript 中的函数防抖与节流详解及实用场景
在前端开发中,处理用户频繁触发的事件,如输入框的输入、按钮点击、窗口调整大小等,常常需要优化性能以减少无效操作。为此,函数防抖(debounce)和函数节流(throttle)是两种常见的性能优化手段。本文将详细介绍两者的区别与实现,并探讨它们的应用场景。
57 1
|
2月前
|
分布式计算 JavaScript 前端开发
在 JavaScript 中,哪些场景需要考虑精度控制?
【10月更文挑战第29天】JavaScript在上述各种场景中都需要根据具体的业务需求和数据特点,合理地进行精度控制,以确保计算结果的准确性和可靠性,从而为用户提供正确、稳定的服务和体验。
|
3月前
|
JavaScript 前端开发
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
138 1
|
4月前
|
JavaScript 前端开发
JavaScript编程实现tab选项卡切换的效果
JavaScript编程实现tab选项卡切换的效果
|
4月前
|
JavaScript 前端开发
用JavaScript编程控制网页上checkbox选择状态:全选、全部取消、反选
用JavaScript编程控制网页上checkbox选择状态:全选、全部取消、反选
|
8月前
|
JavaScript 前端开发 数据处理
掌握JavaScript中的二进制运算,提升你的编程技能!
掌握JavaScript中的二进制运算,提升你的编程技能!