Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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_Multiline - Fatal编程技术网

Javascript 将正则表达式应用于跨多行的数据-“;通用汽车公司;旗不';行不通

Javascript 将正则表达式应用于跨多行的数据-“;通用汽车公司;旗不';行不通,javascript,regex,multiline,Javascript,Regex,Multiline,我的源数据如下所示: ab ab 我在其上运行以下命令: function lintPost(postText) { var replacements = { a : "4", b : "BBBB" } for (var pattern in replacements) { if (replacements.hasOwnProperty(pattern)) { var postText = postText

我的源数据如下所示:

ab

ab
我在其上运行以下命令:

function lintPost(postText) {
    var replacements = {
        a : "4",
        b : "BBBB"
    }

    for (var pattern in replacements) {
      if (replacements.hasOwnProperty(pattern)) {
        var postText = postText.replace(pattern, replacements[pattern], "gm");
        console.log(postText);
      }
    }
    return postText;
};
我得到以下回复:

4BBBB

ab 
这意味着,尽管同时使用了全局和多行标志,regexen仍然只应用于第一行-JS似乎在第一行中断时停止匹配

输出应该是

4BBBB

4BBBB
我试着只使用g,只使用m,甚至不使用y

为什么JavaScript与源数据中的其他行不匹配?

在String.replace方法中使用flags参数是非标准的。使用带有相应标志的RegExp对象,而不是使用此参数

因此,以这种方式更改代码:

var postText.replace(new RegExp(pattern,"gm"), replacements[pattern]);

你能提供一把小提琴吗?哇。先生,你是个天才。应该更仔细地阅读MDN!此解决方案有效-我将接受5分钟后的一次,因此让我。谢谢大家!@顺便说一句,在这种情况下,您不需要
m
标志。