2017-05-31 8 views
0

私はAprilJavaScript Regex手紙がいくつかの特別な言葉の開始/終了/間にあるときに手紙の置換を除外する方法?

サンプルテキストを次のテキストでMを置き換えたい:

DDDD YY M 5月5日月SUM MMMM 56 MM M

期待される結果:

DDDD YY 4月 5月火星SUM MMMM 56 MM 4月


本当に私がとき replacmentのを無視します:

  • MがスタートですMayおよび私は、次のコードを試してみましたSUM

の終わりMMMMまたはMMまたはMMM

  • Mされるが、それは、交換から、特別な言葉を排除するものでは線量:
  • Mは、いくつかのM同様の間​​にある

    text.replace(/[^May|Mars|MMMM|MM|MMM|SUM]M/g,"April") 
    
    // Incorrect result>> dddd yy aM5AprilayAprilay SUMAprilMMM 56AprilMApril 
    
  • +0

    あなたは '[]'正規表現で何を意味するのかeplainsチュートリアルを読む必要があります。それはそのような言葉を排除することとは関係ありません。 – Barmar

    +2

    あなたがしたいことは、負帰ってきたことが必要ですが、Javascriptにはこれがありません。回避策についてはhttps://stackoverflow.com/questions/641407/javascript-negative-lookbehind-equivalentを読んでください。 – Barmar

    答えて

    4

    単純なやり方ですべてのtho最初のSE不要な部分:

    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; 
     
    }));

    関連する問題