Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由于夏普(#)字符,javascript正则表达式捕获中缺少字符_Javascript_Regex_Regex Group - Fatal编程技术网

由于夏普(#)字符,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?)(.*)$/