Javascript 防止RegEx模式选择'-';在小组开始时

Javascript 防止RegEx模式选择'-';在小组开始时,javascript,regex,Javascript,Regex,我正在尝试提取一个短代码中的文本部分,该短代码如下所示 [img:some-code-here-which-could-have-UPPER-case-and-0-9-numbers]. 问题 A:这会一直像我想的那样吗? B:我怎么能不选择任何以破折号开头的文本 \[img:{1}[a-zA-Z\-0-9]+\] 我的问题是,这个正则表达式似乎可以满足我99%的需求,但它仍然选择了下面它不应该选择的内容 [img:-not-a-code] 我会写这个 \[img:[a-zA-Z0-9]

我正在尝试提取一个短代码中的文本部分,该短代码如下所示

[img:some-code-here-which-could-have-UPPER-case-and-0-9-numbers]. 
问题 A:这会一直像我想的那样吗? B:我怎么能不选择任何以破折号开头的文本

\[img:{1}[a-zA-Z\-0-9]+\]
我的问题是,这个正则表达式似乎可以满足我99%的需求,但它仍然选择了下面它不应该选择的内容

[img:-not-a-code]
我会写这个

\[img:[a-zA-Z0-9][a-zA-Z0-9\-]*\]
但这与[img:x-------------]匹配。不知道它是否适合你的需要

为了避免单词之间出现多个破折号,您可以尝试

\[img:[a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*\]


不,每个字符不允许超过一个破折号。如何使其选择全局?使用value.match('[img:[a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*]/g');返回null.nm。我不知道您不需要为regEx引用
\[img:[a-zA-Z0-9]+([a-zA-Z0-9]+*)*\]
[img:
开头,后跟至少一个字母/数字,后跟任意数量或没有成对的单破折号和至少一个字母/数字,并以
]
结尾<代码>[和
]
需要转义<代码>[a-zA-Z0-9]表示:任何一种(在范围内)<代码>+表示:至少一个<代码>*表示:任意数量的重复(包括无重复)。
\[img:\w+(\-\w+)*\]