在javascript中使用正则表达式匹配_ {number}

时间:2011-03-15 14:27:46

标签: javascript jquery regex

我正在尝试图像src的匹配部分,例如:

  

图像/ preview_1.jpg

我想改变_1来说_6

所以我想尝试匹配_1

function ClickImgOf(filename, itemid){
   var re = new RegExp("(.+)_[0-9])\\.(gif|jpg|jpg|ashx|png)", "g");
   return filename.replace(re, "$1_"+itemid+".$2");
}

我的功能是......

我知道只有0-9匹配,但我只是试图让某些东西起作用,即便没有。

可以说我现在对Regex了解不多。

3 个答案:

答案 0 :(得分:3)

您的模式中有一个不匹配的)括号。是什么让你失望?看起来不错。如果您的问题能够匹配2位或更多位数字,请尝试[0-9]+

function ClickImgOf(filename, itemid){
   var re = new RegExp("(.+)_([0-9]+)\\.(gif|jpg|jpg|ashx|png)", "g");
   return filename.replace(re, "$1_"+itemid+".$3");
}

答案 1 :(得分:1)

试试这个:

(.+_)[0-9]+(\.(?:gif|jpg|jpg|ashx|png))

然后你可以这样做:

return filename.replace(re, "$1" + itemid + "$2");

另外,下载并安装:http://www.ultrapico.com/ExpressoDownload.htm

使用正则表达式时非常宝贵。

答案 2 :(得分:1)

您不需要使用正则表达式对象构建正则表达式,使用文字更容易,性能也更好。

function ClickImgOf(filename, itemid) {
   return filename.replace(/_\d+\.(gif|jpg|jpg|ashx|png)$/g, '_'+itemid+'.$2');
}