Regex 修复不正确匹配两个连续字符的正则表达式

Regex 修复不正确匹配两个连续字符的正则表达式,regex,Regex,我需要一些帮助来修复我的正则表达式,它应该符合以下条件: s且仅s f且仅f dn且仅dn d前面的任何一个或两个整数(35d) 或任何带小数的数字 ss将无效,dnf将无效,305d将无效 正则表达式: ^(s|f|dn)|(\d{2}d)$让我开始学习 sf匹配,但不应该匹配。 您的|操作员正在吞食您的锚!根据本文,引擎将第一个备选方案视为^(s | f | dn),第二个备选方案视为(\d{2}d)$-因此s是一个有效的匹配,因为没有说明它必须位于字符串的末尾 尝试在非捕获组

我需要一些帮助来修复我的正则表达式,它应该符合以下条件:

  • s
    且仅
    s
  • f
    且仅
    f
  • dn
    且仅
    dn
  • d前面的任何一个或两个整数(
    35d
    ) 或任何带小数的数字
    • ss
      将无效,
      dnf
      将无效,
      305d
      将无效
正则表达式:
  • ^(s|f|dn)|(\d{2}d)$
    让我开始学习
    • sf
      匹配,但不应该匹配。

    • 您的
      |
      操作员正在吞食您的锚!根据本文,引擎将第一个备选方案视为
      ^(s | f | dn)
      ,第二个备选方案视为
      (\d{2}d)$
      -因此
      s
      是一个有效的匹配,因为没有说明它必须位于字符串的末尾

      尝试在非捕获组中粘贴您的术语,以确保
      操作符不能触碰您的锚定:
      ^(?(s | f | dn)|(\d{2}d))$
      应该可以工作;似乎同意


      我还看到一个注释,您希望任何十进制数都有效。因此,您的正则表达式是:
      ^(?(s | f | dn)|(\d{2}d)|(\d+\.\d+)$
      -

      看起来您想创建一个正则表达式,但不知道从哪里开始。请查看资源,它有很多提示。另外,有关一些基本的正则表达式信息,请参阅post。一旦您准备好了一些表达式,但解决方案仍然存在问题,请使用最新的详细信息编辑问题,我们将很乐意帮助您解决问题。您能再举几个例子吗?您的问题有点不清楚。这就是你要找的:
      (s | f | dn)|(\d{2}d)
      ?您可能需要开始/结束字符(
      ^
      $
      ),这取决于您是否尝试匹配整个字符串。此模式匹配:<代码> > <代码>,>代码> f '/COD>,<代码> DN '/COD>,或'<代码> 99 D < /代码>(任意2个数字,D)。谢谢@ DVO,这为我建立了一个基础。不过,这仍然允许“sf”或“ss”I投票重新开放。将OP发送到链接页面没有任何帮助,也不是关于特定正则表达式的特定问题的重复。感谢社区对我的信任。谢谢@Nick,那是我需要的秘方。我还需要匹配任何数字,所以最后我做到了:^(?(s | f | dn)|(\d{2}d)|([0-9]+([.][0-9]+)?)$,实际上,我需要匹配一个“d”前面的1或2个数字,所以(\d{2}d)变成了(\d{1}d}\d}d}d)我正在学习!!