对原始二进制数据使用regexp 我将V8脚本嵌入到VC++应用程序中,我得到了一些原始的二进制数据,我想把它们传递给JavaScript。现在,在JavaScript中,我计划对数据执行一些正则表达式

对原始二进制数据使用regexp 我将V8脚本嵌入到VC++应用程序中,我得到了一些原始的二进制数据,我想把它们传递给JavaScript。现在,在JavaScript中,我计划对数据执行一些正则表达式,javascript,regex,binary-data,Javascript,Regex,Binary Data,当我的数据只使用标准JavaScript字符串对象时,一切都非常简单。然而,据我所知,它使用UTF16表示,并希望数据是有效的Unicode。但我有一些任意数据可能包含“\0”和其他原始数据,尽管大部分数据只是文本 我该怎么处理?我四处搜索了一下,也许ArrayBuffer或类似的东西就是我需要存储原始数据的对象。但是,我没有找到如何在该对象上执行常规正则表达式方法。基本上我需要RegExp.test和RegExp.exec 我刚刚签出了Node.js代码,似乎它们支持二进制数据,并通过v8::

当我的数据只使用标准JavaScript字符串对象时,一切都非常简单。然而,据我所知,它使用UTF16表示,并希望数据是有效的Unicode。但我有一些任意数据可能包含“\0”和其他原始数据,尽管大部分数据只是文本

我该怎么处理?我四处搜索了一下,也许ArrayBuffer或类似的东西就是我需要存储原始数据的对象。但是,我没有找到如何在该对象上执行常规正则表达式方法。基本上我需要RegExp.test和RegExp.exec

我刚刚签出了Node.js代码,似乎它们支持二进制数据,并通过v8::string::NewFromOneByte将其放入字符串中。见和。这就回答了我的问题,也就是说,我可以用字符串,不是吗?有什么缺点吗


我还是不明白为什么我的问题不好。请解释下一票。

从我当前的所有测试来看,它似乎与正常字符串的预期效果一样

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

var s = "\x00\x01\x02\x03"
该字符串上的正则表达式的工作方式与预期相同

在C++方面,如果您想将二进制数据获取到JS字符串对象:

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);
}

你想在二进制数据上搜索正则表达式吗?@jfriend00:是的。我不确定使用什么JavaScript对象来保存二进制数据,也不确定是否可以对其使用标准JS regexp。我基本上是在征求意见,如何处理这些要求。我是JavaScript新手。无论谁投了反对票,你能就如何让我的问题更清楚给出建议吗?我不确定还有什么不清楚的地方。Javascript不是设计用来做你想做的事情的。Javascript对字符串执行正则表达式搜索。字符串是UTF-8编码的,而不是纯二进制数据。我不知道如果你把二进制数据放进一个字符串并尝试一下会发生什么。你必须看到发生了什么,并且可能需要在多个浏览器中进行测试,以确定你是安全的,并且它做了你希望它做的事情。Albert-你可以提交自己的答案,然后接受它。当你发现自己的答案时,这是正确的程序。