如何用取决于替换位的东西替换字符串的一部分?

时间:2015-02-12 16:06:24

标签: javascript jquery regex

我有一个包含图像标记的字符串:

"Hello World bla [image-37388] bla bla"

现在我如何用该图像的网址替换该标记?当然,url取决于令牌中的数字。如何启动正则表达式以找到它,然后将替换部分的值提供给函数,然后返回正确的替换字符串?

我是javascript的新手,所以我很乐意提供任何帮助。

4 个答案:

答案 0 :(得分:2)

您可以使用capturing group来保留您想要匹配的部分,然后访问反向引用$1以在替换调用中将值插回字符串内。

var s = 'Hello World bla [image-37388] bla bla'
var r = s.replace(/\[image-(\d+)]/, 'http://liberty.edu/$1.gif');
console.log(r) //=> 'Hello World bla http://liberty.edu/37388.gif bla bla'

答案 1 :(得分:0)

你需要获得价值,做你的东西,然后替换

var someString = "Hello World bla [image-37388] bla bla";

// this sets newSubString to ["[image-37388]"]
var newSubString = someString.match(/[\[][a-z-0-9]*[\]]/);

// do something with the substring
var someUrl = "some url";
//replace it with your new url

someString = someString.replace(newSubString[0], someUrl);

console.log(someString);

答案 2 :(得分:0)

创建一个接受3个参数的函数。具有要匹配的模式的String,保留图像的baseURL以及图像的文件类型。

var string = "Hello World bla [image-37388] bla bla";
var baseURL = "www.whatever.com/images/"
var fileType = "jpg"


function getURL(urlString, baseURL, fileType) {
    var matches = urlString.match(/\[image-(\d+)?\]/);
    if (matches[1]) {
        return baseURL + matches[1] + "." + fileType;     
    }        
}

getURL(string, baseURL, fileType);

使用String对象的内置match函数查找有问题的令牌并解析,返回格式化的字符串。

答案 3 :(得分:0)

您需要将replace与捕获组和替换函数一起使用:

var input = "Hello World bla [image-37388] bla bla"
var regex = /\[image-(\d+)]/;
var result = input.replace(regex, function(match,$1){
   return '<img src="path\\to\\myimg-' + $1 + '.jpg">';
});
alert(result);

现场演示:http://jsfiddle.net/3Lxwfj6s/