我想替换字符串中某些出现的字符,不确定如何用正则表达式实现。
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')
任何帮助将不胜感激。
答案 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')
警告:并非所有浏览器都支持?<!
后面的负面表情