Regex 特殊正则表达式

Regex 特殊正则表达式,regex,Regex,我需要一个正则表达式来验证3种不同的情况: 99.99 F99.9 F/S99.9 点可以用逗号代替 我有这样的[F | F/S]?\d*[\,.]\d*但我不能让第三个案例起作用 任何帮助都将不胜感激 您可以使用可选组,而不是字符类: (?:F(?:/S)?)?\d*[,.]\d+ ^^ ^^ ^^^^ 见 如果需要匹配整个字符串,请在、^和$周围添加锚定:^(?:F(?:S)?)?\d*[,.]\d+$ 详情: (?:F(?:/S)?-可选的F,可选择后跟/S \

我需要一个正则表达式来验证3种不同的情况:

  • 99.99
  • F99.9
  • F/S99.9
  • 点可以用逗号代替

    我有这样的
    [F | F/S]?\d*[\,.]\d*
    但我不能让第三个案例起作用


    任何帮助都将不胜感激

    您可以使用可选组,而不是字符类:

    (?:F(?:/S)?)?\d*[,.]\d+
    ^^   ^^  ^^^^         
    

    如果需要匹配整个字符串,请在、
    ^
    $
    周围添加锚定:
    ^(?:F(?:S)?)?\d*[,.]\d+$

    详情:

    • (?:F(?:/S)?
      -可选的
      F
      ,可选择后跟
      /S
    • \d*
      -0+位(如果您希望至少有1位,请将
      *
      替换为
      +
    • [,.]
      -逗号或点
    • \d+
      -1+位

      • ^(F(/S)??99\.9$
        。下一个从已删除的Aaron答案中摘录:第三种情况不起作用,因为您没有正确编写第一个正则表达式片段:
        […]
        是一个字符类,它将匹配它包含的任何字符。您用
        量词作为后缀,表示它必须匹配0或1次,因此它不能匹配3个字符
        F/S
        。简而言之:一个字符类匹配类中定义的单个字符,应用于该类的量词定义将匹配多少个这样的字符。实际上,您需要一个分组构造,而不是一个char类(正如我前面提到的)。这就是我要找的,您是一个天才的Wiktor!非常感谢你!