RegEx匹配多个可选元素组(javascript)

时间:2014-01-14 10:54:29

标签: javascript regex

我需要一个正则表达式来匹配Javascript中的以下类型的字符串:

  • /foo[123abc]/
  • /foo[123abc]/bar[cba321]/
  • /foo[52.1,23.3]/bar[52.2,23.42]/
  • /foo[52.1,23.3]/bar[52.2,23.42]/baz[abc123]/
  • /foo[52.1,23.3]/bar[52.2,23.42]/baz[12.1,42.23]/quux[2u33-c0ffee]/

我想将它们拆分为名称和方括号内的地址。此外,它们可以是可选的,尾部斜杠也是可选的。

只是为了说明这件事:

/foo[123abc]/

应该提供

"foo", "123abc"

/foo[123abc]/bar[52.1,23.42]

应该提供

"foo", "123abc"
"bar", "52.1,23.42"

但是

/foo/bar

不应该匹配。

很抱歉,我没有添加目前的提案。

我目前最好的事情是:

/(?:\/([^\[]+)\[([^\]]+)\])?/

它匹配组但只有一个。如果我添加一个全局修饰符,它会开始吃第二个结果,这意味着

foo, 123abc
bar  cba321

变为

foo[123abc]
bar cba321

有趣的是,它在regex101中比在我的nodejs测试脚本中效果更好。

1 个答案:

答案 0 :(得分:2)

这个正则表达式对我有用:

\/(\w+)(?:\[([^\]]+)\])

见这里:http://regex101.com/r/aC6tI6