Проверьте содержимое перед использованием регулярного выражения - PullRequest
1 голос
/ 19 декабря 2011

Я получаю вывод из заметок на странице 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.

1 Ответ

2 голосов
/ 19 декабря 2011

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

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

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

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

...