检测字符串中的数字、pi 和 e



我有一个正则表达式/(-?.?d+(.d{1,2})?))/g来捕获可以是负数、十进制或正数的数字。我还希望能够捕获特殊符号,特别是πe.

我尝试过的:

  • /(-?.?d+(.d{1,2})?)|πe)/g

如何捕获这两个符号的表达式,例如234π243.1πe3π1e43e

我假设你使用JS。

只需将其用于(负(数字:/-?(d*.)?(d+)/

这是您的符号:/[πe]/

现在我们将这两者结合起来以匹配倍数,例如 234π2 .

/((-?(d*.)?(d+))|([πe]))+/

修复

该模式也符合Casimir et Hippolyte指出的-1-1-1.1.1.1。要解决此问题,请执行以下操作:

第一部分仍将是一个数字或符号:/((-?(d*.)?d+)|[πe])/

但是,我们将使用一个新的表达式,

而不是简单地重复使用表达式,该表达式不允许符号或小数,例如.1/(((d+.)?d+)|[πe])/

放在一起: /((-?(d*.)?d+)|[πe])(((d+.)?d+)|[πe])*/

(我还删除了不必要的括号。

这是一个有效的正则表达式,它捕获所有字符串中的数字、修饰符(目前为 +-.(和特殊字符,其余的省略。请注意,您的e很可能会捕获文本中无意e。由于缺乏其他测试用例,这是我能做的最好的事情。

[-+.]?[πe]?d+[πe]?
  1. 第一部分是可选的修饰符(来自该类,零次(
  2. 和另一类可选的特殊字符
  3. 您的数字,一次或多次
  4. 特殊字符的最终可选类,零次或多次。

最新更新