【发布时间】:2014-02-27 08:43:26
【问题描述】:
我在我的 C++ 应用程序中嵌入了 JavaScript(通过 V8),我得到了一些想要传递给 JavaScript 的原始二进制数据。现在,在 JavaScript 中,我打算对数据做一些正则表达式。
当我的数据只使用标准 JavaScript String 对象时,一切都非常简单。但是,据我了解,它使用 UTF16 表示并期望数据是有效的 Unicode。但我有任意数据(可能包含 '\0' 和其他原始数据 - 尽管大部分只是文本)。
我应该如何处理?我搜索了一下,也许ArrayBuffer 或类似的东西是我需要存储我的原始数据的对象。但是,我没有找到如何对该对象执行通常的正则表达式方法。 (基本上我需要RegExp.test 和RegExp.exec)。
我刚刚检查了 Node.js 代码,它们似乎支持二进制数据,只是通过v8::String::NewFromOneByte 将其放入字符串中。请参阅 here 和 here。这样就可以回答我的问题(即我可以使用String),不是吗?有什么缺点吗?
(我仍然不明白为什么我的问题不好。请解释否决票。)
【问题讨论】:
-
所以你想对二进制数据进行正则表达式搜索?
-
@jfriend00:是的。我不确定到底用什么 JavaScript 对象来保存二进制数据,也不确定我是否可以在上面使用标准的 JS 正则表达式。我基本上是在征求意见,如何处理这些要求。我是 JavaScript 新手。
-
谁投了反对票,你能就如何让我的问题更清楚提出建议吗?我不确定有什么不清楚的地方。
-
Javascript 的设计目的不是为了做你想做的事。 Javascript 对字符串进行正则表达式搜索。字符串是 UTF-8 编码的,而不是纯二进制数据。我不知道如果您将二进制数据放入字符串并尝试它会发生什么。你必须看看会发生什么,并且可能需要在多个浏览器中进行测试才能知道你是安全的,并且它会按照你的意愿去做。
-
Albert - 您可以提交自己的答案然后接受。当您发现自己的答案时,这是正确的程序。
标签: javascript regex binary-data