正则表达式匹配数字数学操作数和数字

时间:2014-09-20 20:31:04

标签: javascript regex

编写与数字,数学操作数和数字匹配的正则表达式的最佳方法是什么。

不是那么快,数字和操作数可以是符号,例如(1,或+)或自然语言字符串(一,加,和)。

所以它必须匹配以下之一:

  • 012345678onetwothreefourfivesixseven或{ {1}}或eightnineteneleventwelve

然后是以下之一:

  • thirteen+-*xX/^plusandminusadded tonegativepositivetimesmultiply或{ {1}}或multiplied bydivided byoverto the power of

然后是以下之一:

  • raised toraised to the012345678onetwothreefourfive或{ {1}}或sixseveneightnineten

以下是一些例子:

  • 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 -

1 个答案:

答案 0 :(得分:0)

正则表达式用于字符串模式匹配,而不是用于解析完整的语法。要么使用语法分析库,要么通过创建接受语法的DFA编写自己的文件,然后将字符串作为字符流运行(您可以轻松地执行此操作,因为JS中的字符串就像迭代一样用于数组)。 p>

虽然我不能提出“为什么你会接受文字输入”的问题,因为那只是愚蠢的。它不像键盘不允许你键入数字和符号。