输入是这样的:

0030 0110 0030 0210 0030 0310 0030 0410
0030 0510 0030 0610 0030 0710 0030 0810


我希望输出是这样的:

00 30 01 10 00 30 02 10 00 30 03 10 00 30 04 10 00 30 05 10 00 30 06 10 00 30 07 10 00 30 08 10


换句话说,我希望输出以一堆两位(十六进制)数字和仅一行分开。

我尝试了这个:

const REGEX_FIND_2 = /(\w{2}(?! |\n|\r))|(\n)|(\r)/g;
const REGEX_REPLACE_2 = "$1 ";


奇怪的是,它在Sublime Text 3中工作,但在JavaScript中,在行之间附加了一个这样的空格:

00 30 01 10 00 30 02 10 00 30 03 10 00 30 04 10  00 30 05 10 00 30 06 10 00 30 07 10 00 30 08 10


请注意04 1000 30之间的多余空间。

最佳答案

您可以用单个空格代替换行符,然后在每对数字之间插入一个空格:

s = s.replace(/[\r\n]+/g, ' ').replace(/(\d{2})(\d{2})/g, "$1 $2");


参见JS演示:



var s = "0030 0110 0030 0210 0030 0310 0030 0410\r\n0030 0510 0030 0610 0030 0710 0030 0810";
console.log(s.replace(/[\r\n]+/g, ' ').replace(/(\d{2})(\d{2})/g, "$1 $2"));





如果您需要确保仅影响“整个单词”的4位数字块,请使用单词边界:/\b(\d{2})(\d{2})\b/g

10-04 20:22