javascript - 对原始二进制数据使用正则表达式

标签 javascript regex binary-data

我将 JavaScript 嵌入到我的 C++ 应用程序中(通过 V8),并且获得了一些想要传递给 JavaScript 的原始二进制数据。现在,在 JavaScript 中,我计划对数据执行一些正则表达式。

当我的数据仅使用标准 JavaScript String 对象时,一切都非常简单。但是,据我了解,它使用 UTF16 表示形式,并期望数据是有效的 Unicode。但我有任意数据(可能包含 '\0' 和其他原始数据 - 尽管它大部分只是文本)。

我应该如何处理这个问题?我搜索了一下,也许 ArrayBuffer 或类似的东西是我需要存储原始数据的对象。但是,我没有找到如何对该对象执行常用的正则表达式方法。 (基本上我需要 RegExp.testRegExp.exec)。

<小时/>

我刚刚查看了 Node.js 代码,似乎它们支持二进制数据,只需通过 v8::String::NewFromOneByte 将其放入字符串中。请参阅herehere 。这样就可以回答我的问题(即,我可以只使用 String),不是吗?有什么缺点吗?

(我仍然不明白为什么我的问题很糟糕。请解释一下否决票。)

最佳答案

从我当前的所有测试来看,它似乎与普通 String 的预期效果一样。

您甚至可以直接在 JavaScript 中指定,例如

var s = "\x00\x01\x02\x03"

该字符串上的正则表达式按预期工作。

在 C++ 方面,如果您想将二进制数据放入 JS String 对象中:

v8::Local<v8::String> jsBinary(const uint8_t* data, uint32_t len) {
    assert(int(len) >= 0);
    return String::NewFromOneByte(v8::Isolate::GetCurrent(), data, String::kNormalString, len);
}

关于javascript - 对原始二进制数据使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22063219/

相关文章:

python - 如何在 python 中创建正则表达式

javascript - 将字符串转换为表情符号

javascript - Node.js 中未定义上传的图像数据

javascript - .NET Core 对象 JSON 序列化为 Javascript 格式

javascript - Electron 菜单动态更改项目标签

parsing - 在Dart中解析二进制DICOM数据

c - C的流中字符的含义

javascript - 通过键而不是索引访问值

xml - 为什么用正则表达式解析 XML 是个坏主意?

android - 将二进制流转换为字节?