регулярное выражение, если еще утверждение не удалось - PullRequest
0 голосов
/ 06 декабря 2018

вот функция, которая проверяет, есть ли ссылка в тексте (если это так, заменяет ее на интерактивную)

пример:

Фактическое разрешение этого изображения 3067x2276, а не 4381x3251,См. эту страницу для получения информации о том, как узнать, какое разрешение изображения.

function getTopComment(permalink) {
  var fullLink = "https://www.reddit.com" + permalink + ".json?sort=top";
  $.getJSON(fullLink, function foo(result) {
    var rawComment = result[1].data.children[0].data.body;
    var regExp = /\[(.*?)\]\(([^\)]+)\)/g;
    var matches = regExp.exec(rawComment);
    if (matches.length > 2) {
      var replace = `<a href="${matches[2]}">${matches[1]}</a>`;
      var cleanComment = rawComment.replace(matches[0], replace);
      $("#text").append('<p>' + cleanComment + '</p>');
    } else {
      $("#text").append('<p>hello</p>');
    }
  });
}
<body>
  <div class="container">
    <div id="art" class="img column1">
    </div>
    <div id="text" class="comment column2">
    </div>
  </div>
</body>

Я попытался запустить его на консоли JavaScript в Chrome, заменив $("#text").append... с console.log("hello"), и это работает.Почему это не работает на jsfiddle?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

exec возвращает null, если регулярное выражение не соответствует результату.Просто проверьте это сначала.

...
if (matches && matches.length > 2) {
...
0 голосов
/ 06 декабря 2018

используйте попробуйте и поймайте вместо

function getTopComment(permalink) {
    var fullLink = "https://www.reddit.com" + permalink + ".json?sort=top";
  $.getJSON(fullLink, function foo(result) {
    var rawComment = result[1].data.children[0].data.body;
    try {
        var regExp = /\[(.*?)\]\(([^\)]+)\)/g;
        var matches = regExp.exec(rawComment);
      var replace = `<a href="${matches[2]}">${matches[1]}</a>`;
      var cleanComment = rawComment.replace(matches[0], replace);
      $("#text").append('<p>' + cleanComment + '</p>');
    } catch(err) {
      $("#text").append('<p>' + rawComment + '</p>');
    }
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...