次の項目にどの算術演算子 (*、/、+、-) が存在するかをテストします。
13*4
7+8
-15/3
7-5
JavaScript には次の正規表現があります。
/[\*\+/\-]/
問題は、正規表現がマイナス記号を-15/3
演算子として識別することです。文字列の最初の文字と一致しないようにするにはどうすればよいですか?
次の項目にどの算術演算子 (*、/、+、-) が存在するかをテストします。
13*4
7+8
-15/3
7-5
JavaScript には次の正規表現があります。
/[\*\+/\-]/
問題は、正規表現がマイナス記号を-15/3
演算子として識別することです。文字列の最初の文字と一致しないようにするにはどうすればよいですか?
次のような正規表現に一致させることができます。
One or more digits (also allowing a decimal)
followed by optional whitespace
followed by an operator
followed by optional whitespace
followed by one or more digits (also allowing a decimal)
次に、途中でキャプチャされたグループを参照して、演算子だけを取得します。
/[\d.]+\s*([*+\-\/])\s*[\d.]+/
サンプルコード:
var match = str.match(/[\d.]+\s*([*+\-\/])\s*[\d.]+/);
if (match) {
var operator = match[1];
}
実際のデモとテスト コード: http://jsfiddle.net/jfriend00/DgrSg/
演算子の前に数字以上のもの (他の式など) を許可したい場合は、単純または複雑な正規表現よりも多くのことを行う必要があります。この回答は、提示した例を解決しようとしているだけだと想定しています。
あなたが使用することができます:
/.[\*\+/\-]/
これは、シンボルの前に文字があることを保証するだけです。
これは非常に迅速で汚い修正です。おそらく、完全な式エバリュエーターを作成して、他の100の潜在的なエラー条件をキャッチすることをお勧めしますが、単純なものが必要な場合や、持っているものよりもわずかに堅牢なものが必要な場合は、それで十分です.
演算子の前に数字があり、その後に数字またはマイナス記号と数字が続くことを確認してください。
/\d[\*\+/\-]-?\d/