如果string匹配regex replace,如果没有添加变量

时间:2015-04-06 13:46:04

标签: javascript regex string

我使用javascript将字符串附加到变量(将特定图像大小添加到移动设备上的滑块)。

这是我使用的行。

var newsrc = src.substring(0, src.lastIndexOf(".")) + "-420x320" + src.substring(src.lastIndexOf("."));

然而,在某些情况下,图像src具有其他尺寸,在这种情况下,我想删除该尺寸并添加上面的尺寸。

实施例: 两者

 http://domain.com/10001428289243jpg-700x703.jpg and
 http://domain.com/10001428289243jpg.jpg 

需要:

 http://domain.com/10001428289243jpg-420x320.jpg

在这种情况下你会用什么?

3 个答案:

答案 0 :(得分:3)

您只需要构建一个带有可选部分的模式:

src = src.replace(/(?:-\d+x\d+)?\.jpg$/, '-420x320.jpg');

其中(?:-\d+x\d+)?是可选的非捕获组,$是字符串末尾的锚点。

答案 1 :(得分:0)

我坚持使用与-#x#模式匹配的快速替换,并将其替换为空白。

var newsrc = src.replace(/(-\d+x\d+)/,"").substring(0, src.lastIndexOf(".")) + "-420x320" + src.substring(src.lastIndexOf("."));

答案 2 :(得分:0)

FIDDLE LINK:http://jsfiddle.net/9u8m9oob/1/

您也可以使用以下方式实现相同目的:

var str1='http://domain.com/10001428289243jpg.jpg';
var str2='http://domain.com/10001428289243jpg-700x703.jpg';
var regex=/^(http:\/\/domain\.com\/)(\d+jpg)(.)*(\.jpg)$/g;
var result= str1.replace(regex,"$1$2-420x320$4");
console.log(result);  // gives output as http://domain.com/10001428289243jpg-420x320.jpg