Javascript 相互匹配多个可选字符

Javascript 相互匹配多个可选字符,javascript,regex,Javascript,Regex,我想匹配substitute的所有有效前缀,后跟其他字符,以便 sub/abc/def与sub零件匹配 substitute/abc/def与substitute零件匹配 subt/abc/def不匹配或仅匹配sub部分,而不是t 我当前的正则表达式是/^s(u(b)(s(t)(i(t)(u(te?)吗?)/),它可以工作,但这似乎有点冗长 有没有更好的方法(例如,不太冗长的方法)来实现这一点?这将与您在问题中提到的方法相同 ^s(?:ubstitute|ubstitut|ubstitu|u

我想匹配
substitute
的所有有效前缀,后跟其他字符,以便

  • sub/abc/def
    sub
    零件匹配
  • substitute/abc/def
    substitute
    零件匹配
  • subt/abc/def
    不匹配或仅匹配
    sub
    部分,而不是
    t
我当前的正则表达式是
/^s(u(b)(s(t)(i(t)(u(te?)吗?)/
),它可以工作,但这似乎有点冗长


有没有更好的方法(例如,不太冗长的方法)来实现这一点?

这将与您在问题中提到的方法相同

^s(?:ubstitute|ubstitut|ubstitu|ubstit|ubsti|ubst|ubs|ub|u)?
上面的正则表达式将始终尝试匹配可能的大单词。因此,首先它检查
substitute
,如果它找到任何,那么它将进行匹配,否则它将跳转到下一个模式,即
substitute
,同样,它将跳转到
u


您可以使用两步正则表达式

  • 使用此简单模式查找主题的第一个单词
    ^(\w+)
  • 使用从步骤1中提取的单词作为正则表达式模式,例如对单词
    替换

  • 使用交替运算符。@AvinashRaj如何使用<代码>s | su | sub | subs | substit | substit | substitu | substitut | substitut | substitut | substitute | substitut | substitut | substitute | substitute | substitute | substitute | substitute | substitute | | | | substitu u | | | | | | | | | substitu,但它几乎是字符数的两倍。@jazzpi i刚刚提供了一个替代方案。对我们来说,编写像我一样的正则表达式可能很容易,但是你的正则表达式太难了,它包含许多捕获组,许多可选的量词
    。。此外,您可以将
    ub | u
    减少到
    ub?
    ,除非有人提出正则表达式,否则我认为这是一种方法。我认为Regex对2来说有点过分了。虽然,像string.indexOf()这样的东西应该足够了。但是
    subt
    不会匹配
    substitute
    @AvinashRaj,它是基于原始的post
    subt/abc/def不匹配。
    但是你是对的。我想我的问题不是很清楚。对我来说,匹配与否并不重要。