我在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 吗?
问题是您使用相同的正则表达式对象在全局g
标志集的情况下多次进行测试。
来自 MDN .test()
doco:
"与exec(或与之结合使用)一样,在同一全局正则表达式实例上多次调用的测试将超越前一个匹配项。
在这种情况下,我认为您不需要 g
标志,因为您正在匹配字符串末尾预期的文件扩展名 - 您甚至可能希望使用 $
显式执行此操作:
/([b-z])((.mp3)|(.wav))$/i