看下面这段代码,利用正则表达式获取文件扩展名。把这段代码嵌入网页中,会发生一个奇怪的现象,函数第一次执行成功,第二次失败,第三次成功,第四次失败,如此下去...
var re=/[.][a-zA-Z0-9]+$/ig;
var rev;
function GetFormat(v)
{
if(v.indexOf(".")<0)
{
alert("There is no url for this media");
return;
}
else
{
rev=re.exec(v);
return rev[0].toLowerCase().replace(".","");
}
}
问题出现在哪里呢?如果把函数作如下修改,就不会出现前面的问题了。难道不能使用g ?
var re=/[.][a-zA-Z0-9]+$/i;
var rev;
function GetFormat(v)
{
if(v.indexOf(".")<0)
{
alert("There is no url for this media");
return;
}
else
{
rev=re.exec(v);
return rev[0].toLowerCase().replace(".","");
}
}
本文探讨了一段使用正则表达式获取文件扩展名的JavaScript代码中存在的问题:全局搜索标志'g'导致的意外行为,并提供了修复方案。

921

被折叠的 条评论
为什么被折叠?



