0

なぜこれが機能しないのですか?

var str = "nd2(31)jnd";
str = str.replace(/[0-9](/,/[0-9]*(/);

すべての数字を前の括弧に置き換えたい例: "2(" with "2 *("

4

1 に答える 1

2

あなたの正規表現は間違っています、これはあなたが望むことをします:

str.replace(/([0-9]+)\(/g, "$1*(");

$1parens の最初の一致を参照し、それに一致()するにはエスケープ\(する必要があります。

更新:gグローバル マッチング用に追加

2(3(4+5)) => 2*(3*(4+5))

更新:括弧の反対側でも機能させるには、組み合わせて:

str.replace(/(\d+)\(/g, "$1*(").replace(/\)(\d+)/g, ")*$1");
于 2013-03-16T09:45:49.180 に答える