我的内容带有<del></del><ins></ins>标记。我有一个正则表达式,可以满足图片中清楚说明的条件

http://i.stack.imgur.com/8iNWl.png

满足条件的正则表达式是

https://regex101.com/r/cE4mE3/19

这个正则表达式工作得很好。但是,当内容更多或匹配内容很长时,执行时间会增加,因此会引发超时错误,该错误可在regex101.com/r/cE4mE3/20中看到

如何简化正则表达式(\w*(?:(?:(?:<del\b[^>]*>(?:(?!<\/del>).)*<\/del>)|(?:<ins\b[^>]*>\w+<\/ins>)|(?:\w+<\/ins>)|(?:<ins\b[^>]*>\w+))(?:\w+|))+)以避免引发超时错误

最佳答案

正则表达式不是执行此操作的正确方法。您自己发现了一个陷阱。
将会有更多。因此请切换到DOM解析器。要消除超时问题,您可以尝试

((?=(\w*))\2(?:(?:(?:<del\b[^>]*>(?:(?!<\/del>).)*<\/del>)|(?:<ins\b[^>]*>\w+<\/ins>)|(?:\w+<\/ins>)|(?:<ins\b[^>]*>\w+))(?:\w+|))+)


参见演示。

https://regex101.com/r/cE4mE3/24

关于javascript - 正则表达式超时错误jQuery/JavaScript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38834868/

10-11 11:51