替换字符串中某些出现的字符

时间:2020-05-17 09:19:05

标签: javascript regex string typescript

我想替换字符串中某些出现的字符,不确定如何用正则表达式实现。

originalString =  '=(IF(OR(L4=NULL,L4=""),0,L4)'

我想用字母M替换它:

finalString = '=(IF(OR(M4=NULL,M4=""),0,M4)'

按如下所示使用split或replace时,即使'NULL'中的L也被替换。

finalString = originalString.split('L').join('M')

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

M在一个单词的开头且后跟至少一位数字时,您似乎想用L替换M。如果是这样,您可以使用\b(“字边界”)断言和\d周围的M(一个数字)来说明您要替换哪些特定的M。您可以将\d包装在前瞻性断言((?=...))中,因此它实际上不是匹配项的一部分。要在整个字符串中执行此操作,您需要“全局”标志(g)。总结一下:/\bM(?=\d)/

const originalString =  '=(IF(OR(L4=NULL,L4=""),0,L4)';
const updated = originalString.replace(/\bM(?=\d)/g, "L");
console.log(updated);

如果您还想将m替换为L,请添加i(不区分大小写)标志。

答案 1 :(得分:0)

另一种解决方案是替换所有L个字符(忽略大小写),避免使用用于创建单词“ Null”的任何L个字符

originalString =  '=(IF(OR(L4=NULL,L4=""),0,L4)'
finalString = originalString.replace(/(?=l)(?<!Nul)(?<!Nu)\w/gi,'M')

警告:并非所有浏览器都支持?<!后面的负面表情