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

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

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

相关文章
|
1月前
|
移动开发 JavaScript 前端开发
JavaScript的正则表达式实现邮箱校验
JavaScript的正则表达式实现邮箱校验
53 1
|
1月前
|
JavaScript 前端开发
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
|
1月前
|
前端开发 JavaScript 开发者
探索JavaScript ES6的八种常见使用技巧:开启现代编程之旅
探索JavaScript ES6的八种常见使用技巧:开启现代编程之旅
|
1月前
|
JavaScript 前端开发
javascript中的正则表达式
javascript中的正则表达式
N..
|
1月前
|
JavaScript 前端开发 PHP
web编程的正则表达式
web编程的正则表达式
N..
10 1
|
1月前
|
存储 JavaScript 编译器
这款国产中文编程火了!通过文言文编译生成Python、JS、Ruby代码!
这款国产中文编程火了!通过文言文编译生成Python、JS、Ruby代码!
|
1月前
|
监控 JavaScript 前端开发
JavaScript 正则表达式详解
【2月更文挑战第26天】
34 1
JavaScript 正则表达式详解
|
1月前
|
JavaScript 前端开发
编程笔记 html5&css&js 079 JavaScript 循环语句
编程笔记 html5&css&js 079 JavaScript 循环语句
|
1月前
|
JavaScript 前端开发 开发者
编程笔记 html5&css&js 078 JavaScript 条件判断语句
条件判断语句是首先要接触的语句。通过条件判断来执行不同的代码块。
|
1月前
|
JavaScript 前端开发 编译器
编程笔记 html5&css&js 077 Javascript 关键字
编程笔记 html5&css&js 077 Javascript 关键字