我有一个很大的字符串(1116902个字符长),我想用一个正则表达式处理(很简单)。我从以base64编码的肥皂服务器得到响应。因此,我只是在适当的xml标记之间获取结果,然后解码响应。

这对于一个小的要求。但是,当我收到很大的响应时,就永远不会调用replace()方法的回调函数。我试图在regex101网站上测试该字符串,它可以找到结果。所以我想知道我的JavaScript引擎是否存在限制。我正在研究使用Webkit作为JavaScript引擎的Wakanda Server V10。我无法提供该字符串,因为它包含一些企业信息。

这是我的正则表达式:/xsd:base64Binary">((.|\n)*?)<\/responseData>/

我教过它也许是((.|\n)*?)组中未包含的特殊字符。但是,为什么要用regex101找出结果(那么可能是JavaScript引擎)

也许有人可以帮助我吗?

谢谢

最佳答案

如果您可以保证开始和结束定界符之间没有标签(听起来可能是这样),则只需将RE更改为

/xsd:base64Binary">([^<]*)<\/responseData>/


不需要任何回溯,可能对您有用。

[^<]仅表示除<字符外的所有内容。由于您的版块的开始标记和结束标记之间不应有任何标记(至少这是我所了解的),因此可以接受所有内容,直到您按下结束标记为止。重要的是,RE引擎可以立即判断是否有匹配项,因此不需要分支或回溯。

关于javascript - 使用字符串的替换方法时是否有长度限制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34315166/

10-12 21:46
查看更多