RegexUtil.match 耗时问题

Blade 已结 2 1196

一、该问题的重现步骤是什么?

1. 为啥这个这么耗时呢

2. 

3.image.png


二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

2.5.1

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
  •  smallchill
    smallchill (最佳回答者)
    2020-06-19 15:17

    工具类代码如下,一共就三行,都是用的java api,不会有明显性能损耗的,你需要把参数都贴出来才能帮你测试

    image.png

    0 讨论(1)
  • 2020-06-19 15:22

    校验的参数为:oRrdQt-jkAvGWXjGXKhJpSZZOzfs


    正则为:

    public static final String EMAIL = "^\\w+([-+.]*\\w+)*@([\\da-z](-[\\da-z])?)+(\\.{1,2}[a-z]+)+$";

    public static final String PHONE = "^1[3456789]\\d{9}$";


    回答: 2020-06-19 15:43

    1. public static final String EMAIL = "^\\w+([-+.]*\\w+)*@([\\da-z](-[\\da-z])?)+(\\.{1,2}[a-z]+)+$";

    我单独测试发现,是这个正则表达式 校验的时候 耗时较长


    作者追问:2020-06-19 16:05

    是你参数的问题,你应该解码后用常规的数据来校验,这个没办法,毕竟都是很底层的用法,没法再优化了,除非你简化email的判断正则,去除一些逻辑

    你的参数:

    image.png

    正常参数:

    image.png

    正常错误参数:

    image.png


    作者追问:2020-06-19 16:38

    另外阿里巴巴的开发手册里面有这么一句说明:

    在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度

    你可以使用正则编译,提高匹配速度

    0 讨论(0)
提交回复