Javascript 用Regex替换方法-意外的输出日志匹配$&;和组$1

Javascript 用Regex替换方法-意外的输出日志匹配$&;和组$1,javascript,regex,replace,match,Javascript,Regex,Replace,Match,我打算使用.replace方法从字符串中提取段落并将每个段落推送到数组中 我正在努力使用getValues函数,当我将Match和Group1记录到控制台时,得到了一些意想不到的结果 以下是代码wip: var mystring = 'Valid prater\nLorem ipsum dolor sit amet, consectetur adipiscing elit. \nProin volutpat facilisis imperdiet. \n Nunc porttito\nMorb

我打算使用.replace方法从字符串中提取段落并将每个段落推送到数组中

我正在努力使用getValues函数,当我将Match和Group1记录到控制台时,得到了一些意想不到的结果

以下是代码wip:

var  mystring = 'Valid prater\nLorem ipsum dolor sit amet, consectetur adipiscing elit. \nProin volutpat facilisis imperdiet. \n Nunc porttito\nMorbi non eros nec arcu condimentum ultrices in ut nunc. \nMaecenas elit tellus, scelerisque ac auctor fermentum, bibendum. '

var paragraphs = [];
var obj = {};

var getValues = function(match,p1) { 
  console.log('Match: ' + match );
  console.log('p1: ' + p1 );

    // obj= {};
    // obj['paragraph'] = p1; 
    // paragraphs.push(obj);
 };

mystring.replace(/([^\\n][^\\]+)/g, getValues);

预期产出:

Match: Valid prater
p1: Valid prater
Match: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
p1: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Match: Proin volutpat facilisis imperdiet.
p1: Proin volutpat facilisis imperdiet.
Match: Nunc porttito
p1: Nunc porttito
Match: Morbi non eros nec arcu condimentum ultrices in ut nunc.
p1: Morbi non eros nec arcu condimentum ultrices in ut nunc.
Match: Maecenas elit tellus, scelerisque ac auctor fermentum, bibendum. 
p1: Maecenas elit tellus, scelerisque ac auctor fermentum, bibendum.
我期待着类似的行为

实际产量:

Match: Valid prater
Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Proin volutpat facilisis imperdiet. 
 Nunc porttito
Morbi non eros nec arcu condimentum ultrices in ut nunc. 
Maecenas elit tellus, scelerisque ac auctor fermentum, bibendum. 
p1: Valid prater
Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Proin volutpat facilisis imperdiet. 
 Nunc porttito
Morbi non eros nec arcu condimentum ultrices in ut nunc. 
Maecenas elit tellus, scelerisque ac auctor fermentum, bibendum. 
有人能解释一下为什么我在将match和p1记录到控制台时没有得到预期的输出吗

为什么这种行为与其他人不同

需要做哪些更改才能获得预期的输出


谢谢

您可以利用正则表达式中的多行标志或
m
。这允许您使用锚定
^
$
在每个匹配中匹配一整行,如下所示:

var  mystring = 'Valid prater\nLorem ipsum dolor sit amet, consectetur adipiscing elit. \nProin volutpat facilisis imperdiet. \n Nunc porttito\nMorbi non eros nec arcu condimentum ultrices in ut nunc. \nMaecenas elit tellus, scelerisque ac auctor fermentum, bibendum. '

var paragraphs = [];
var obj = {};

var getValues = function(match,p1) { 
  console.log('Match: ' + match);
  console.log('p1: ' + p1);
 };

mystring.replace(/^(.*)$/mg, getValues);

非常感谢阿努巴瓦。这将提供所需的输出。我感到困惑的是,您的表达式将多个匹配项和组输出到控制台(根据需要),但当我在上查看它时,表达式只返回一个匹配项和组。为什么会出现这种差异?我想我一定错过了什么?感谢是因为regexr.com不知道如何解释
\n
。你可以使用,或者啊,抓住你了。所以看起来我也可以调整我所拥有和使用的/([^\n]+)/g,并得到期望的结果。谢谢你的帮助。