由于夏普(#)字符,javascript正则表达式捕获中缺少字符
在表达式中:由于夏普(#)字符,javascript正则表达式捕获中缺少字符,javascript,regex,regex-group,Javascript,Regex,Regex Group,在表达式中:/^(C | Db | D | Eb | E | F | F | G | Ab | A | Bb | B)(.$/,Cm7将有两个捕获组:C和m7Eb-^9将有捕获组Eb和-^9 那么为什么F#maj7被捕获为F和#maj7,而不是F#和maj7?我试图摆脱这个尖锐的角色,但没有成功String.prototype.match和String.prototype.split都给出相同的结果,并且 这是regexp引擎中的一个bug吗?我可以通过切换F和F#使它工作,因为顺序意味着它在F
/^(C | Db | D | Eb | E | F | F | G | Ab | A | Bb | B)(.$/
,Cm7
将有两个捕获组:C
和m7
Eb-^9
将有捕获组Eb
和-^9
那么为什么F#maj7
被捕获为F
和#maj7
,而不是F#
和maj7
?我试图摆脱这个尖锐的角色,但没有成功String.prototype.match
和String.prototype.split
都给出相同的结果,并且
这是regexp引擎中的一个bug吗?我可以通过切换
F
和F#
使它工作,因为顺序意味着它在F#
之前寻找F
这似乎对我现在起作用了:
/^(C|Db|D|Eb|E|F#|F|G|Ab|A|Bb|B)(.*)$/
这是一个更好的方法。使用
?
量词匹配1或0个出现次数和字符类-/^([CG]| Db?| Eb?| F?| Ab?| Bb?)(.*)$/