如何替换字符串这是不加引号(How to replace a string which is not

2019-10-22 07:42发布

IM与下面的情况下挣扎,我有这个词多次测试的内部具有多行字符串,字符串为:

Hello my name is "test" im a test
test is testing

我需要更换所有的测试-strings其不在引号每次发现那些应该跟着至少1个空格或通过别的断行不行,所以上面的字符串会变成:

Hello my name is "test" im a HELLOWORLD
HELLOWORLD is testing

还测试-string可以通过空格进行预先计划,但还没有没有。

我已经发现是只替换字符串这不是引号内的方法:

str.replace(/(test)(?=(?:[^"]|"[^"]*")*$)/, 'HELLOWORLD')

可以sombebody给我一个手找到其他规则?

Answer 1:

您可以使用:

var str = 'Hello my \'test\' name is "test" im a test\ntest is testing';
var repl = str.replace(/("[^"]*"|'[^']*')|\btest\b/g, function($0, $1) { 
           return ($1 == undefined) ? "HELLOWORLD" : $1; });

输出:

Hello my 'test' name is "test" im a HELLOWORLD
HELLOWORLD is testing


Answer 2:

(\btest\b)(?=(?:[^"]|"[^"]*")*$)

尝试this.See演示。

https://regex101.com/r/pT4tM5/28



文章来源: How to replace a string which is not in quotes