JavaScript正则表达式当字母是开头/结尾/某些特殊单词之间时,如何排除字母替换?

时间:2017-05-31 18:51:35

标签: javascript regex

我希望使用M

替换以下文字中的April

示例文字:

  

dddd yy a M 5月5日月亮MMMM 56 MM M

预期结果:

  

dddd yy a April 5月5日Mars SUM MMMM 56 MM 4月

我真的想忽略替换

  • MMayMars
  • 的开头
  • M介于某些M赞:MMMMMMMMM
  • 之间
  • M已结束SUM

我尝试了以下代码,但不排除替换中的特殊字词:

text.replace(/[^May|Mars|MMMM|MM|MMM|SUM]M/g,"April")

// Incorrect result>>   dddd yy aM5AprilayAprilay SUMAprilMMM 56AprilMApril

1 个答案:

答案 0 :(得分:4)

一种简单的方法是首先匹配所有不需要的部分:



var text = 'dddd yy aM5 May May SUM MMMM 56 MM M';
console.log(text.replace(/\bM(?:a(?:y|rs)|M+)|SUM|(M)/g, function(match, p1) {
    return p1 ? 'April' : match;
}));