Javascript 什么是更快的,一个复杂的正则表达式,还是许多更小的?
有些人在遇到问题时会想“我知道,我会使用正则表达式。”现在他们有了/[0-9]+/问题 我试图用较新的文本替换段落(长度不确定)中的某些字符组合。字符组合可能变得相当复杂,以至于正则表达式是这样的:Javascript 什么是更快的,一个复杂的正则表达式,还是许多更小的?,javascript,regex,scalability,Javascript,Regex,Scalability,有些人在遇到问题时会想“我知道,我会使用正则表达式。”现在他们有了/[0-9]+/问题 我试图用较新的文本替换段落(长度不确定)中的某些字符组合。字符组合可能变得相当复杂,以至于正则表达式是这样的: />:\)|\([\w~]+\)|\\[:]?[od]\/|[:;\|bBiIxX8\(\)\]][=\-"^:]?[)>$&|\w\(\)*@#?]?[)>$&|\w\(\)*@#?]/g 它包含六个不同的“子句”(这是正确的词吗?),由管道分隔 这个正
/>:\)|\([\w~]+\)|\\[:]?[od]\/|[:;\|bBiIxX8\(\)\]][=\-"^:]?[)>$&|\w\(\)*@#?]?[)>$&|\w\(\)*@#?]/g
它包含六个不同的“子句”(这是正确的词吗?),由管道分隔
这个正则表达式最好分成六个较小的正则表达式,还是在同一段落上运行六次
.replace()
的开销会抵消任何好处(如果有的话)?使用regexp
的好处是,您可以像post中解释的那样预编译它们
在本文中,您可以看到,如果反复使用正则表达式,
regexp
perf会降低。您是如何运行该正则表达式的<代码>变量re=/../;re.exec('string')或string.match(/…../)
类型?根据JS实现,正则表达式可能会被编译一次或多次。我使用.replace()
并将一个函数传递到第二个参数来处理匹配(并返回替换),您可以将模式简化为:/:\)\124\([\ w~+\)\124\:?[od]\/\124;[]:|bBiIxX8()][=”^:-]?[)>$&|\w(*@#?]{1,2}/g
谢谢@JoDev,它肯定会预编译正则表达式,以便重复调用.replace()