2016-03-06 3 views
0

Я пытаюсь выяснить, как извлечь URL из следующей строки в JS.Получить значение URL из строки в Javascript

var str = '[velocity type="youtube" id="239793212" img="http://website.com/wp-content/uploads/image-placeholder.jpg" alt="Play" color="#FFFFFF" bkg_color="transparent"]'; 

Я хотел бы как-нибудь вытянуть только значение http://website.com/wp-content/uploads/image-placeholder.jpg из этого шорткода WordPress, который читается редактором WordPress TinyMCE.

Я должен добавить, что строка не всегда будет в точном формате, а позиция img="" будет колебаться.

Есть ли способ проанализировать эту строку как JSON или массив, чтобы я мог получить доступ к значению img?

+0

Вы должны были пометить свой вопрос регулярным выражением. Это поможет вам сделать это. –

ответ

4
/img="([^"]*)"/.exec(str)[1] 

На английском языке: Создать регулярное выражение, которое соответствует img части, положить URL в группе 1 и после выполнения выражения в строке, получите содержимое группы 1.

T он выражение ломается, как

 
img="  # the string 'img="' 
(   # begin group 1 
    [^"]*  # any character that is not a '"', any number of times 
)   # end group 1 
"   # the final double quote 

Соответствующая документация: RegExp.prototype.exec() on the MDN и, конечно, основная информация на сайте о регулярных выражениях: http://www.regular-expressions.info/.

1

А, не так OO способ сделать это:

var str = '[velocity type="youtube" id="239793212" img="http://website.com/wp-content/uploads/image-placeholder.jpg" alt="Play" color="#FFFFFF" bkg_color="transparent"]'; 

var url = null; 
str.split(' ').forEach(function(s){ 
    if(s.indexOf('img') > -1) { 
    url = s.split("=")[1] 
    } 
}) 
// url now contains your url 
console.log(url); 

Или как один лайнер:

var url = str.split(' ').filter(function(s){ return s.indexOf('img') > -1})[0].split("=")[1] 
+0

Нет, это дало бы ему «URL». ;) – m02ph3u5

+0

Работает для меня здесь: https://jsfiddle.net/97udpakL/ – cl3m

+0

Это не дает вам чистый URL. Он заключен в '' '. Вы просто разделились на' = ', но не удаляете' ''. – m02ph3u5

0

Ваш лучший выбор - это регулярное выражение.

var regEx= /"http:\/\/.+?"/g; //If you want to extract all urls. 
var imgEx= /img=".+?"/g // If you want to extract all img parameters. 
Смежные вопросы