这个东西大概两周前就写了,不过由于个人状态不佳,没有放出来,今天微博上有童鞋讶异为什么我说常规的/(^\s*)|(\s*$)/g效率不是最高的,那么我就来简单的说一下,不过和题目中说的一样,我们是探讨,如果有疑问或者更好的看法不妨提出来。

首先把测试链接发出来,有兴趣的童鞋可以去试一试。

http://jsperf.com/sy-trim-regexp

下面是测试代码,详细的说看注释。

先写一个较复杂的匹配规则: /^\s*(\S*\s*?\S*)\s*$/

然后是常规的规则: /(^\s+)|(\s+$)/g

这两个规则的区别一目了然,一个是匹配规则比较多的一次性匹配,一个是规则简单的分组匹配(匹配两次) 如果你打开了文章开头的链接,很容易就可以看出来,匹配规则较多的一次性匹配,比简单的两次匹配的时间快(主要原因CPU计算太快了) 所以,如果要匹配的样本数据不多的时候,一次性匹配规则长度也不太长的话,不要再用分组而是选择用一次性的匹配。 (@玉驰童鞋说过一个例子,说一次性匹配的正则太复杂,以至于CPU跑不动的情况,咱们另外讨论。) 有问题和建议欢迎留言讨论。

—EOF—-