我需要捕获字母的某种组合,后跟一个数字(任意数量),并用一个名为input
的变量表示。字母是严格的,数字不是。这些字母要么在字符串的开头,要么在反斜杠之后。
因此,例如,我需要不区分大小写地捕获:
对于这些,我有一个简单的规则可以工作(两个规则):
input.value.match(/^(ab|cd)[0-9]+/i) || input.value.match(/\\(ab|cd)[0-9]+/i)
但是,也有可能在我还需要捕获的设置字母之前(无论是从开头还是在反斜杠之后)存在一个名为test
的字符串。因此,除了仅捕获给定的两个字母之外,我还需要捕获这些出现的位置,其中字母前的test
是严格的因素,例如:
我很确定可以在匹配查询中放置某种“可选”查询,而不必分别重写test
的规则,但是与regex一样,我不确定我会在这里吗?
答案 0 :(得分:2)
您可以使用此正则表达式:
(?:^|\\)(?:test)?(?:ab|cd)\d+
哪个是
\
test
ab
或cd
答案 1 :(得分:0)
为什么不只将文本test
设为可选?
(?:test)?(ab|cd)[0-9]+
应该适合您的任何情况。