编写与数字,数学操作数和数字匹配的正则表达式的最佳方法是什么。
不是那么快,数字和操作数可以是符号,例如(1,或+)或自然语言字符串(一,加,和)。
所以它必须匹配以下之一:
0
或1
或2
或3
或4
或5
或6
或7
或8
或one
或two
或three
或four
或five
或six
或seven
或{ {1}}或eight
或nine
或ten
或eleven
或twelve
然后是以下之一:
thirteen
或+
或-
或*
或x
或X
或/
或^
或plus
或and
或minus
或added to
或negative
或positive
或times
或multiply
或{ {1}}或multiplied by
或divided by
或over
或to the power of
然后是以下之一:
raised to
或raised to the
或0
或1
或2
或3
或4
或5
或6
或7
或8
或one
或two
或three
或four
或five
或{ {1}}或six
或seven
或eight
或nine
或ten
以下是一些例子:
eleven
将匹配twelve
将匹配thirteen
将匹配2+2
(因为2减5不是因为2 2减去)two- 2
将不匹配five raised to the 6
将不匹配2 2 minus 5 will match
将不匹配2 2 /
将匹配(因为四十三或三加二)我不知道该怎么做才能展望,但我想这样做是:8 -
答案 0 :(得分:0)
正则表达式用于字符串模式匹配,而不是用于解析完整的语法。要么使用语法分析库,要么通过创建接受语法的DFA编写自己的文件,然后将字符串作为字符流运行(您可以轻松地执行此操作,因为JS中的字符串就像迭代一样用于数组)。 p>
虽然我不能提出“为什么你会接受文字输入”的问题,因为那只是愚蠢的。它不像键盘不允许你键入数字和符号。