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

标签 javascript regex wakanda

我有一个大字符串(1116902 个字符长度),我想用正则表达式(非常简单的一个)处理它。我从以 Base64 编码的 Soap 服务器收到响应。所以我只是在适当的 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/

相关文章:

php - 验证澳大利亚 DVA 号码(长度可能可变)

regex - 匹配 ${.*} 的正则表达式

OSX v10.8 的正则表达式匹配

Wakanda 中的 SSL - 中间证书

javascript - AngularJS 日期过滤器使用/Date(############) 格式

javascript - 如何使用Jodit uploader 和coldfusion上传图像?

javascript - 选择 a 标签后的 "li"元素

javascript - 尝试从 Node 服务器检索 json 对象时获取 "Cannot GET/"

angularjs - 我希望我的 angular-loading-bar 自动处理 XHR 请求

ssl - 瓦坎达和 SSL : Server Name and how to gracefully handle HTTP requests?