1

数据实际上来自 websocket,我想从中提取1234...

var data = 'TEST|1234\0'
console.log(data);

Output: 
TEST|1234

结果,正则表达式也没有按预期工作。

var regex = /\|(.*?)\\/;
var re = new RegExp(regex, "g");
var extractedNumber = msg.match(re);
console.log(extractedNumber);

Output:

null

但是,如果我更改正则表达式以查看正在发生的事情,我会看到\0正在变成\u0000

var regex = /\|(.*)/;
var re = new RegExp(regex, "g");
var extractedNumber = msg.match(re);
console.log(extractedNumber);

Output:

[ '|1234\u0000' ]

这个答案说这\u0000将是具有 ASCII 代码 0 的字符的 unicode 表示。

https://stackoverflow.com/a/12195709/6926996

4

1 回答 1

1

You don't have to use regex if you know the pattern,

var data = 'TEST|1234\0'
console.log(+(data.slice(data.indexOf('|') +1, data.indexOf('\\'))))

+ for convert it to number, slice from '|' +1 until \ (have to write twice \\ at the indexOf ...)

于 2020-06-20T09:29:58.110 回答