Regex 正则表达式将单词和数字与重复序列匹配(FOO-123/FOO-456/…等)

Regex 正则表达式将单词和数字与重复序列匹配(FOO-123/FOO-456/…等),regex,Regex,我有一个变更日志,我需要如下所示: - [FOO-123] This is a change from one project - [FOO-567 / FOO-890] This has two changes from one project - [BAR-123 / BAZ-456 / BANG-1234 ] This has three changes from three different projects 我对我现在的正则表达式很满意,但后来我开始进一步测试它,当我不小心输入了错

我有一个变更日志,我需要如下所示:

- [FOO-123] This is a change from one project
- [FOO-567 / FOO-890] This has two changes from one project
- [BAR-123 / BAZ-456 / BANG-1234 ] This has three changes from three different projects
我对我现在的正则表达式很满意,但后来我开始进一步测试它,当我不小心输入了错别字或添加了一个字符(如从BAR到FOO)来生成FOA或缺少一个/,它就搞砸了:

- [FOB-1234] hello 
- [BAG-1234] how
- [FOO-1234 FOO-5678] are
- [FOA-1234 / BARG-1234 / BZF-1234] you?
我怎样才能得到它,使顶部总是好的,但底部永远不工作

我当前创建的正则表达式:

/-\s\[[(FOO|BAR|BAZ|BANG)-\d{\s}{/}{\s}+]*]\s.+/g

您可以匹配其中一个备选方案,并使用一个可选的重复组,该组前面有空格、正斜杠和空格

^-\s\[(?:FOO|BAR|BAZ|BANG)-\d+(?: / (?:FOO|BAR|BAZ|BANG)-\d+)*\] .+$
那会匹配的

  • ^
    字符串的开头
  • \s\[
    匹配空白字符和
    [
  • (?:FOO | BAR | BAZ | BANG)
    匹配任何备选方案
  • -\d+
    匹配
    -
    和1+位
  • (?:
    非捕获组
    • /(?:FOO | BAR | BAZ | BANG)-\d+
      匹配
      /
      ,1或替代项和-加1+数字
  • )*
    关闭分组并重复0多次
  • \].+
    匹配
    ]
    ,空格和除换行符以外的任何字符的1+出现次数
  • $
    字符串结尾


请注意,要删除组周围的
[
]
,否则将使其成为字符类。

尝试
^-\s\[(?:FOO | BAR | BAZ | BANG)-\d+(?:/(?:FOO | BAR | BAZ | BANG)-\d+*]。+$
为什么是这一部分<代码>\d{\s}{/}{\s}+