Javascript JS regex匹配两种可能的组合

Javascript JS regex匹配两种可能的组合,javascript,regex,Javascript,Regex,我需要捕获字母的特定组合,后跟一个数字(任意数量),用一个名为input的变量表示。字母是严格的,数字不是。字母要么位于字符串的开头,要么紧跟在反斜杠之后 例如,我需要非案例敏感地捕捉: AB12345678谷歌 CD4321纽约邮报 任何东西\here\ab1357 有些东西\too\cd2468 对于这些,我有一个简单的规则(两个规则): 但是,也可以将名为test的字符串放在我还需要捕获的集合字母之前(无论是从开头还是在反斜杠之后)。因此,除了捕获给定的两个字母外,我还需要捕获这些事件

我需要捕获字母的特定组合,后跟一个数字(任意数量),用一个名为
input
的变量表示。字母是严格的,数字不是。字母要么位于字符串的开头,要么紧跟在反斜杠之后

例如,我需要非案例敏感地捕捉:

  • AB12345678谷歌
  • CD4321纽约邮报
  • 任何东西\here\ab1357
  • 有些东西\too\cd2468
对于这些,我有一个简单的规则(两个规则):

但是,也可以将名为
test
的字符串放在我还需要捕获的集合字母之前(无论是从开头还是在反斜杠之后)。因此,除了捕获给定的两个字母外,我还需要捕获这些事件,其中字母之前的
测试是严格的因素,例如:

  • TestCD4321纽约邮报
  • 任何东西\here\testab1357

我很确定可以在匹配查询中放置某种类型的“可选”查找,而无需分别重写
test
的规则,但由于我使用了regex,所以我不确定我在这里要查找什么?

为什么不将文本
test
设置为可选

(?:test)?(ab|cd)[0-9]+

应适用于您的任何情况。

您可以使用此正则表达式:

(?:^|\\)(?:test)?(?:ab|cd)\d+
即:

  • 匹配开始或
    \
  • 匹配可选字符串
    test
  • 匹配
    ab
    cd
  • 匹配1+个数字

这太完美了!但是,它缺少非大小写敏感度,因此不会捕获
测试
?我没有包含
/…/I
(只是想显示完整的正则表达式)您可以使用
/(?:^ | \\)(?:测试)(?:ab | cd)\d+/I
非常好的解决方案+1正则表达式工作起来很有魅力,但我无法让JS正常工作,也无法验证:
input.value.match(/(?:^\\)(?:test)?(?:ab | cd)\d+/I)
我那双眼睛缺了一个括号,谢谢!
(?:^|\\)(?:test)?(?:ab|cd)\d+