Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是更快的,一个复杂的正则表达式,还是许多更小的?_Javascript_Regex_Scalability - Fatal编程技术网

Javascript 什么是更快的,一个复杂的正则表达式,还是许多更小的?

Javascript 什么是更快的,一个复杂的正则表达式,还是许多更小的?,javascript,regex,scalability,Javascript,Regex,Scalability,有些人在遇到问题时会想“我知道,我会使用正则表达式。”现在他们有了/[0-9]+/问题 我试图用较新的文本替换段落(长度不确定)中的某些字符组合。字符组合可能变得相当复杂,以至于正则表达式是这样的: />:\)|\([\w~]+\)|\\[:]?[od]\/|[:;\|bBiIxX8\(\)\]][=\-"^:]?[)>$&|\w\(\)*@#?]?[)>$&|\w\(\)*@#?]/g 它包含六个不同的“子句”(这是正确的词吗?),由管道分隔 这个正

有些人在遇到问题时会想“我知道,我会使用正则表达式。”现在他们有了/[0-9]+/问题

我试图用较新的文本替换段落(长度不确定)中的某些字符组合。字符组合可能变得相当复杂,以至于正则表达式是这样的:

/>:\)|\([\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()