0

だから私はこの文字列を持っています、それは数式を表します:

(timezone*timelapse)-time

各単語は入力フィールドからのIDを表し、現在、私は各単語を後で評価されるプロトタイプのjs式に置き換えるだけでした。

$('timezone').value,

$('timelapse').value

問題は最後のIDです。私がそれに到達するまでに、私の表現は現在次のようになっています:

($('timezone').value*$('timelapse').value)-time

したがって、単語を検索しtimeて置き換えると$('time').value、最初の2つの値に影響し、最終的な式が台無しになります。

ここでの私の質問は次のとおりです。ここで正しい単語を置き換えるにはどうすればよいですか?

これは数式なので、単語はおそらく次のような数学記号の間にあるはずです。

(+-/* **word** +-/*)

[empty space] **word** +-/*)

(*-/* **word** [empty space]

か否か?

4

2 に答える 2

4

すべてを1つの置換で置き換えることができ、二重置換の問題は発生しません。

exp = exp.replace(/([A-Za-z]+)/g, function(m){
  return "$('" + m + "').value";
});

ロジックのない直接の置換である場合は、Cerbrusが提案したように、キャッチされた値を置換文字列で使用することもできます。

exp = exp.replace(/([A-Za-z]+)/g, "$('$1').value");
于 2013-02-15T12:34:19.767 に答える
1

これを試して:

var newString = oldString.replace(/\btime\b/, "$('time').value")

\b単語の境界です。つまり、正規表現はtimeスタンドアロンの単語である場合にのみ一致し、単語の文字の直後または前にある場合は一致しません。

于 2013-02-15T12:28:07.330 に答える