-1

次の部分文字列の一部を含むソース文字列があります。

  • "最初"
  • "2番目"

に応じて交換する必要があります。

  • "三番"
  • "前方へ"

私は次の方法でそれを行います

var output = input;

var re1 = /first/;
var re2 = /second/;

output = output.replace(re1, "third")
output = output.replace(re2, "forth")

問題は、単一の正規表現でそれを行う方法ですか?

4

3 に答える 3

2

に渡された関数でそれを行うことができます.replace()

output = output.replace(/first|second/g, function(word) {
  return word === "first" ? "third" : "fourth";
});
于 2013-10-13T15:44:31.160 に答える
1

第二引数に関数を渡さないと無理です。

var a =function(a){if(a=="first"){ a="third" }else{ a="forth"} return a}
output = output.replace(/first|second/g, a);

次に、ワンライナーを書くだけでもかまいません。

output = output.replace(/first/g, "third").replace(/second/g, "forth");
于 2013-10-13T15:46:53.777 に答える
1

おそらく次のようなことができます。無名関数を使用する:

var input = "This is the first... no second time that I tell you this!";
var result = input.replace(/first|second/g, function(m) {
    switch(m)
    {
    case "first":
      return "third";
    case "second":
      return "forth";
    }
});

jsfiddle

変数には一致が含まれ、必要に応じてさらに置換を追加できる場所mに渡されます。switch

于 2013-10-13T15:47:52.077 に答える