我需要一个正则表达式来匹配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测试脚本中效果更好。