我想你得问问自己,哪个更重要:可读性,还是耗时?单个正则表达式会更快,但可读性差得多(在我看来)。如果你在较小的字符串上使用这个,我怀疑成本差异是否会很大,但在较大的字符串上,时间是最重要的,也许它值得考虑单个正则表达式,但我仍然认为它不太可能是这种情况(给出了这个确切的例子),所以 * 一般来说 * 我建议你坚持使用你的原始代码。 @luk2302的单一正则表达式解决方案工作完美,所以如果你 * 必须 * 去寻找单一的解决方案,然后去。最初我真的认为一个单一的更复杂的正则表达式将需要更长的时间来加载比一个单一的字符串替换后,一个单一的简单的正则表达式。然而,这是基于一些误导的概念,which has been debunked by @dystroy(谢谢顺便说一句,我想知道这是否线性规模)。
2条答案
按热度按时间uujelgoq1#
/\s*:|\s+(?=\s)/g
这个正则表达式怎么样,它适合你的需要吗?通过text.replace('/\s*:|\s+(?=\s)/g', '');
使用它查找
:
(可选地,前面带有空格或空格后面带有空格)。jsFiddle
Rubular
请注意,为了更改文本,您必须更改代码:
#编辑
显然我的正则表达式比原来的要复杂得多,它的可读性远不如double replace,但它仍然更快:http://jsperf.com/regorreplac(感谢@dystroy提供的比较)。如果在源代码中添加正确的注解,解释regex的作用,那么使用它就没有什么不好的了。
x6492ojm2#
我想你得问问自己,哪个更重要:可读性,还是耗时?单个正则表达式会更快,但可读性差得多(在我看来)。如果你在较小的字符串上使用这个,我怀疑成本差异是否会很大,但在较大的字符串上,时间是最重要的,也许它值得考虑单个正则表达式,但我仍然认为它不太可能是这种情况(给出了这个确切的例子),所以 * 一般来说 * 我建议你坚持使用你的原始代码。
@luk2302的单一正则表达式解决方案工作完美,所以如果你 * 必须 * 去寻找单一的解决方案,然后去。最初我真的认为一个单一的更复杂的正则表达式将需要更长的时间来加载比一个单一的字符串替换后,一个单一的简单的正则表达式。然而,这是基于一些误导的概念,which has been debunked by @dystroy(谢谢顺便说一句,我想知道这是否线性规模)。