この BNF 文法の preg_match 関数を書きたいと思います。
EXP ::= EXP + TERM | EXP - TERM | TERM
TERM ::= TERM * FACTOR | TERM / FACTOR | FACTOR
FACTOR ::= ( EXP ) | DIGIT
DIGIT ::= 0 | 1 | 2 | 3
3 を超える文字や数字を許可したくありません。文字列は $ 記号で終了する必要があります。これらのパターンを試しましたが、うまくいきません。私は自分が犯した間違いを理解していません。
$pattern = "|[0-3\+\-()*/]+\\$$|";
$pattern = "|[^A-Za-z][0-3\+\-()*/]+\\$$|";
編集:
これも試した
$pattern = "|^[0-3+-()*/]+\$$|";
しかし、これは12 +1$ を許可し、3 を超える数字は許可したくありません。
誰かがこれを手伝ってくれませんか?
ありがとうございました。