2011-12-19 2 views
1

Я получаю вывод из заметок на странице FB с использованием API Facebook. В некоторых заметках есть изображение, а в других нет. Я хочу извлечь src изображения, если он есть.Проверить содержимое перед использованием регулярного выражения

Я использую это регулярное выражение, и он отлично работает, но проблема в том, что если заметка не содержит изображения, все не удается.

json.data[i].message.match(/src=(.+?[\.jpg|\.gif|\.png]")/)[1] 

Могу ли я использовать какое-то структуру управления (если еще), чтобы проверить, если примечание содержит изображение перед использованием регулярных выражений?

Если банкнота не содержит изображение, я получаю эту ошибку:

Result of expression 'json.data[i].message.match(/src=(.+?[\\.jpg|\\.gif|\\.png]\")/)' [null] is not an object. 

Я использую Javascript и Appcelerator.

ответ

2

Can I use some kind of a control structure (if else) to check if a note contains an image before using the regex?

Да к структуре управления, но вам не нужно делать это перед регулярным выражением, то регулярное выражение говорит вам, является ли она успешной. Перерыв ваше заявление на две части:

var result = json.data[i].message.match(/src=(.+?[\.jpg|\.gif|\.png]")/); 
if (result) { 
    path = result[1]; 
} 

Проблема у Вас есть то, что match возвращается null, когда нет матча, но затем вы пытаетесь рассматривать его как объект, применяя [1] к нему   — вызывая ошибка. Получив результат и убедившись, что он не является ложным (как указано выше), вы используете только [1], если результат не null.

+0

Работал отлично! Благодаря! –

Смежные вопросы