正则表达式检查循环中的[a-z]范围

时间:2012-08-08 21:54:58

标签: javascript regex range jsfl

我在jsfl中这样做,它使用javascript语法。

我想查看不是序列中第一个的mp3或wav文件。循环向变量'audioFile'提供以下值(--- a.mp3,----- b.mp3,---- c.mp3)。然后我使用以下代码检查变量:

var patt=/([b-z])((\.mp3)|(\.wav))/gi;
if(patt.test(audioFile)){}

对于----- b.mp3,返回true,对于--- a.mp3和---- c.mp3,返回false。 “b”和“c”文件不应该返回true吗?

如果我将其更改为[a-z],则对于--- a.mp3和---- c.mp3返回true,但对于----- b.mp3则返回false。不应该所有三个声音文件名都返回true?

1 个答案:

答案 0 :(得分:1)

问题是您使用相同的正则表达式对象在设置全局g标志的情况下多次测试。

来自MDN .test() doco

  

“与exec一样(或与exec结合使用),在同一个全局正则表达式实例上多次调用的测试将超过上一个匹配。”

在这种情况下,我认为您不需要g标志,因为您要匹配字符串末尾预期的文件扩展名 - 您甚至可能希望使用{{1 }}:

$