如何从JavaScript中可能有一个或多个图像的字符串中获取图像名称?
问题描述:
我必须从消息中的字符串中获取图像的名称。我不得不类型字符串:如何从JavaScript中可能有一个或多个图像的字符串中获取图像名称?
S1 = “血乳酸血乳酸name1.jpg血乳酸血乳酸name2.jpg血乳酸血乳酸”
和
S2 =“血乳酸血乳酸name1.jpg喇嘛喇嘛”
,我有2个问题:
一个函数里柯:
function getPhotoName(message){
var photoRegex = /.* (.*jpe?g).*/i; // the extension may be jpg, jpeg, JPG and JPEG
return message.replace(photoRegex, "$1");
}
它返回正确的名称为s2
情况下,为s1
情况下,结果是第二个名称。
对于类型的函数:
function getPhotoName(message){
var photoRegex = /.* (.*jpe?g).* (.*jpe?g).*/i; // the extension may be jpg, jpeg, JPG and JPEG
return message.replace(photoRegex, "$1");
}
结果是OK的情况下s1
,但对于s2
情况下,结果是名称和文本之前("bla bla name1.jpg"
)。
如何使这项工作?
答
尝试match()
:
var names = "bla bla name1.jpg bla bla name2.jpg bla bla".match(/(\w+\.jpe?g)/gi) //["name1.jpg", "name2.jpg"]
var names = "bla bla name1.jpg bla bla".match(/(\w+\.jpe?g)/gi)// ["name1.jpg"]
var names = "bla bla image.JPEG bla bla".match(/(\w+\.jpe?g)/gi)// ["image.JPEG"]
答
下面的代码将同时满足两个条件。
var str ="bla bla name1.jpg bla bla"
var arr = str.split(" ")
var obj = arr.filter(function(elem){ if(elem.indexOf(".")>-1) return true; })
答
假设你的文件名不有空格的话,我想你可以用一个正则表达式做它只是文件扩展名:
function getFileNames(str) {
return str.split(' ').filter(function(candidate) {
return !!candidate.match(/\.jpe?g$/i);
});
};
这将返回数组与文件名。
答
问题出在你的正则表达式中。缺少g
标志以获取所有匹配项。
var jpegNames = /(\S+\.jpe?g)/gi
s1.match(jpegNames)
s2.match(jpegNames)
虽然如果名称中有空格,则不起作用。 如果你真的想把这些名字放在同一个字符串中,你可以用join(" ")
得到数组。
你有串组输出的控制?它可以让事情变得更容易(虽然你可能喜欢正则表达式:)),只需引入分隔符(如逗号),然后根据该分割字符串分割该字符串 – Modika 2015-04-01 09:55:41
我控制getPhotoName的结果,但我不控制消息 – sop 2015-04-01 10:00:45