我想为这个 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。
有人可以帮我解决这个问题吗?
谢谢你。