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+