匹配多个可选字符相互依赖

时间:2015-03-16 17:11:37

标签: javascript regex

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

  • sub/abc/defsub部分匹配。
  • substitute/abc/defsubstitute部分匹配。
  • subt/abc/def要么不匹配,要么仅匹配sub部分,而不是t

我现在的正则表达式是/^s(u(b(s(t(i(t(u(te?)?)?)?)?)?)?)?)?/,它有效,但这看起来有点冗长。

有没有更好的(如更简洁的方式)这样做?

2 个答案:

答案 0 :(得分:2)

这与您在问题中提到的相同。

^s(?:ubstitute|ubstitut|ubstitu|ubstit|ubsti|ubst|ubs|ub|u)?

上面的正则表达式总是会尝试匹配大字。所以首先检查substitute,如果它找到任何,那么它会匹配,否则它会跳转到下一个模式,即substitut,同样它会继续u

DEMO 1 DEMO 2

答案 1 :(得分:1)

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

  1. 使用此简单模式^(\w+)
  2. 查找主题的第一个单词
  3. 使用步骤1中提取的单词作为正则表达式模式,例如^subs反对substitute
  4. 这个词