我正在尝试在JavaScript中创建一个接受以下等级的正则表达式搜索:A, B+, B, C+, C, D, F, AF, or WF
。
我有以下正则表达式:^A-?|[BCD][+-]?|[AW]?F|W$
如果它至少可以匹配第一个字母和第二个字符(如果有的话),我会很高兴。
答案 0 :(得分:2)
由于您在A-
或[AW]?F
的上下文匹配中使用alternation operator,这可能会被误解,并将A
和F
与单个字符匹配,而不是要匹配的实际完整子模式。
var r = 'AF'.match(/^A-?|[BCD][+-]?|[AW]?F$/);
if (r)
console.log(r[0]); //=> A
如果您不打算将其列出,我会使用非捕获组对您的表达进行分组。
var r = 'AF'.match(/^(?:A-?|[BCD][+-]?|[AW]?F)$/);
if (r)
console.log(r[0]); //=> AF