Javascript 检测字符串中的数字、Pi和e

Javascript 检测字符串中的数字、Pi和e,javascript,regex,Javascript,Regex,我有一个regex/(?\d+(\.\d{1,2})/g来捕获负数、十进制数或正数。我还希望能够捕获特殊符号,特别是πe 我所尝试的: /(?\d+(\.\d{1,2})|πe)/g 如何捕获这两个符号一个表达式,如234π2,43.1πe或3π1e43e,是一个工作正则表达式,它捕获所有字符串中的数字、修饰符(当前为+-)和特殊字符,而不包含其他字符。请注意,您的e可能会捕获文本中无意的es。由于缺少其他测试用例,这是我能做的最好的了 [-+.]?[πe]?\d+[πe]? 第一部分是一

我有一个regex
/(?\d+(\.\d{1,2})/g
来捕获负数、十进制数或正数。我还希望能够捕获特殊符号,特别是
πe

我所尝试的:

  • /(?\d+(\.\d{1,2})|πe)/g
如何捕获这两个符号一个表达式,如
234π2
43.1πe
3π1e43e
,是一个工作正则表达式,它捕获所有字符串中的数字、修饰符(当前为+-)和特殊字符,而不包含其他字符。请注意,您的
e
可能会捕获文本中无意的
e
s。由于缺少其他测试用例,这是我能做的最好的了

[-+.]?[πe]?\d+[πe]?
  • 第一部分是一个可选的修饰符(来自该类,0次或更多次)
  • 和另一个可选的特殊字符类
  • 您的数字,一次或多次
  • 特殊字符的最终可选类别,零次或多次
  • 是一个有效的正则表达式,它捕获所有字符串中的数字、修饰符(当前为+-)和特殊字符,而不包含其余字符。请注意,您的
    e
    可能会捕获文本中无意的
    e
    s。由于缺少其他测试用例,这是我能做的最好的了

    [-+.]?[πe]?\d+[πe]?
    
  • 第一部分是一个可选的修饰符(来自该类,0次或更多次)
  • 和另一个可选的特殊字符类
  • 您的数字,一次或多次
  • 特殊字符的最终可选类别,零次或多次
  • 我假设您使用JS

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

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

    现在我们结合这两个来匹配倍数,比如
    234π2

    /(((((\d*)(\d+)|([πe]))+/

    修理 该模式也与Casimir et Hippolyte指出的
    -1-1-1
    .1.1
    相匹配。要解决此问题,请执行以下操作:

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

    但是我们将使用一个不允许使用符号或小数的新表达式,而不是简单地重复使用表达式,例如
    .1
    /(((\d+\)?\d+)|[πe])/

    把它们放在一起:
    /((((\d*\)?\d+)|[πe])(((\d+\)?\d+)|[πe])*/

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

    我假设您使用JS

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

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

    现在我们结合这两个来匹配倍数,比如
    234π2

    /(((((\d*)(\d+)|([πe]))+/

    修理 该模式也与Casimir et Hippolyte指出的
    -1-1-1
    .1.1
    相匹配。要解决此问题,请执行以下操作:

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

    但是我们将使用一个不允许使用符号或小数的新表达式,而不是简单地重复使用表达式,例如
    .1
    /(((\d+\)?\d+)|[πe])/

    把它们放在一起:
    /((((\d*\)?\d+)|[πe])(((\d+\)?\d+)|[πe])*/


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

    由于正则表达式没有完全标准化,因此带有此标记的所有问题还应包括一个指定适用编程语言或工具的标记。-哪种语言,PHP?你说得对。道歉。由于正则表达式未完全标准化,所有带有此标记的问题还应包括一个指定适用编程语言或工具的标记。-哪种语言,PHP?你说得对。道歉。更正:您的模式也匹配:
    -1-1-1-1
    .1.1.1
    。不确定是否需要这种结果。您的模式也匹配:
    -1-1-1-1
    .1.1.1
    。不确定这种结果是否是预期的。