Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找并替换JavaScript_Javascript_Regex - Fatal编程技术网

查找并替换JavaScript

查找并替换JavaScript,javascript,regex,Javascript,Regex,输入如下: 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 00 30 01 10 00 30 02 10 00 30 03 10 00 30 04 10 00 30 05 10 00 30

输入如下:

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
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
我希望输出如下:

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
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中,它在两行之间增加了一个空格,如下所示:

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
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 10
00 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”;

log(s.replace(/[\r\n]+/g',).replace(/(\d{2})(\d{2})/g,“$1$2”)您可以尝试以下方法:

它需要一次更换操作

const str=`0030 0110 0030 0210 0030 0310 0030 0410
0030 0510 0030 0610 0030 0710 0030 0810`;
const result=str.replace(/(\d{2})(\d{2})(\s+$)/g,`1$2`);

控制台日志(结果)您可以这样做

text.split(' ').join('').split('\n').join('').replace(/(.{2})/g, '$1 ')

我只是在.NET方面有经验,但我会尽力帮助你

首先,您可以消除空白:

var s = "0030 0110 0030 0210 0030 0310 0030 0410".replace(" ", "");
这将为您提供一个不带空格的字符串:

s = "00300110003002100030031000300410"
然后,您可以循环遍历字符串字符,并且每两个都可以对它们执行您想要的操作(这是使用模数运算符(%)-循环的每一次定罪都会从模数中产生0或1。每次点击“0”,您都会进行第二次传递(并且您拥有您的字符串)

var 2LengthCh;
变量1长度;
对于(变量i=0;i
用空格替换空格,然后重试agaiin@Rajesh请举个例子好吗?您得到的额外空格可能是额外的空格或新行字符。因此,请先用空值替换所有空格,然后使用正则表达式进行解析。在行尾得到双空格的原因是因为这两个字符都有
\n
\r
,因此,有两个替换,
\r
->->”和
\n
=>
。您可以使用,但它仍然会产生一个尾部空间,您需要
修剪()
,所以为什么不简化正则表达式并使用相同数量的步骤呢?谢谢。我怎么没注意到:)。我用
[0-9a-f]
替换了
\d
,因为在一个更大的示例中,会出现类似
ab64
的数字。该示例不包括
a-f
数字。