使用字符串的替换方法时是否有长度限制

Is there a length limitation when using replace method of a string?

本文关键字:是否 长度限制 方法 替换 字符串      更新时间:2023-09-26

我有一个大字符串(1116902个字符长度),我想用正则表达式(非常简单的正则表达式)处理它。我从一个用base64编码的soap服务器得到一个响应。因此,我只需要在适当的xml标记之间获得结果,然后对响应进行解码。

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

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

我教过它可能是一个特殊的角色,不包括在((.|'n)*?)组中。但是为什么regex101会发现结果(那么可能是JavaScript引擎)

也许有人能帮我?

感谢

如果你能保证你的开始和结束分隔符之间没有标签(听起来可能是这样),你可以把RE改为

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

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

[^<]只是指除<字符之外的所有字符。因为在你的部分的打开和关闭标签之间不应该有任何标签(至少我是这么理解的),它会接受所有东西,直到你达到关闭标签。重要的是,RE引擎可以立即判断某个东西是否匹配,因此不需要分支或回溯。