JS正则表达式以匹配两种可能的组合

时间:2018-12-17 18:20:41

标签: javascript regex

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

因此,例如,我需要不区分大小写地捕获:

  • ab12345678google
  • cd4321newyorkpost
  • 在这里\ ab1357
  • 某物\太\ cd2468

对于这些,我有一个简单的规则可以工作(两个规则):

input.value.match(/^(ab|cd)[0-9]+/i) || input.value.match(/\\(ab|cd)[0-9]+/i)

但是,也有可能在我还需要捕获的设置字母之前(无论是从开头还是在反斜杠之后)存在一个名为test的字符串。因此,除了仅捕获给定的两个字母之外,我还需要捕获这些出现的位置,其中字母前的test是严格的因素,例如:

  • testcd4321newyorkpost
  • 在此处\ testab1357

我很确定可以在匹配查询中放置某种“可选”查询,而不必分别重写test的规则,但是与regex一样,我不确定我会在这里吗?

2 个答案:

答案 0 :(得分:2)

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

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

哪个是

  • 匹配开始或\
  • 匹配可选字符串test
  • 匹配abcd
  • 匹配1个以上的数字

答案 1 :(得分:0)

为什么不只将文本test设为可选?

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

应该适合您的任何情况。