我有一个包含图像标记的字符串:
"Hello World bla [image-37388] bla bla"
现在我如何用该图像的网址替换该标记?当然,url取决于令牌中的数字。如何启动正则表达式以找到它,然后将替换部分的值提供给函数,然后返回正确的替换字符串?
我是javascript的新手,所以我很乐意提供任何帮助。
答案 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);