我正在使用正则表达式,并且很好奇RegExp的作者如何确定他们编写的模式的改进。例如,这里是用于识别简单货币表达式的模式(为简单起见,省略文字符号或AS2 / AS3标识符)。对我来说,这看起来非常简洁,当在JS环境中运行时,它准确地识别了我的测试用例。然而,我可以看到我使用了3个IF / ELSE语句,也许正是这个用例让我的表达时间超过了它应该或需要的时间。 RegExp优化有一般的经验法则吗?或者只是语言的本质使得案例表明"如果它起作用,它就是正确的表达式"?
感谢阅读和您的反馈,建议或批评。
RegExp模式:
/((\s\.){1})|((\d+){1})((\.\d+|\,\d+)|(\d+)){1,}/
RegExp细分:
/* A */ ((\s\.){1}) /** whitespace followed by period once **/
/* B */ ((\d+){1}) /** any number of digits occurs once before broken pattern **/
((\s\.){1})|((\d+){1}) /** either pattern A or B **/
/* C */ (\.\d+|\,\d+) /** either period or comma preceeding a pattern of digits **/
/* D */ (\d+) /** any number of digits occurs before broken pattern **/
((\.|\,)|(\d+)){1,} /** either pattern A or B repeated at least once **/
/* Final */
((\s\.){1})|((\d+){1})((\.\d+|\,\d+)|(\d+)){1,}