我想为这个 BNF 语法编写 preg_match 函数。
经验 ::= 经验 + 期限 | 经验 - 期限 | 学期
期限 ::= 期限 * 因素 | 期限/因素 | 因素
因素 ::= ( 经验 ) | 数字
数字 ::= 0 | 1 | 2 | 3
我试着这样写
$pattern = "|[0-3+-()*/]+\$$|";
但问题是,它接受字符串 33$,根据我的语法,它是无效的,所以根据我的语法 1+22$ 应该是无效的,因为数字应该是 0|1|2|3。
我犯了什么错误?有人能帮帮我吗。
编辑:
示例: 1+22$ 应该是无效字符串,因为我只想要数字 0,1,2,3 而不是任何大于 3 的数字
谢谢你。