регулярное выражение JavaScript и обрезать все после "тире" - PullRequest
3 голосов
/ 28 февраля 2012

В приведенном ниже HTML-коде я пытаюсь указать переменную, равную «дубовым бочкам», а переменную - просто «25 декабря 2011 года». Я уже смог получить «25 декабря 2011» с помощью регулярных выражений, но я не могу понять, как получить остальные. В основном я хочу удалить «By» и все после первого «-»:

<p class="review-rating">
         By oakbarrels
         - Dec 25, 2011
         -
         Something.com
</p>
<script>
    var thedate =  $('.review-rating').text().match(/\-\s([^\n]+)/)[1].trim();
    var from = ???
</script>

Ответы [ 3 ]

3 голосов
/ 28 февраля 2012
var matches = $('.review-rating').text().match(/\s*By\s+(\w+)\s*-\s*([\w, ]+)/);

jsFiddle .

matches[1] будет содержать 'oakbarrels', а matches[2] будет содержать 'Dec 25, 2011', в соответствии с вашим примером.

Я также изменил ваш html() на text(). Похоже, что HTML не соответствует тексту.

1 голос
/ 28 февраля 2012

Разделить строку первым.Вам даже не нужны регулярные выражения:

var parts = $('.review-rating').text().split('-');
var date  = $.trim(parts[1])
var from  = $.trim(parts[0]).substring(3);

Вот демонстрация.

0 голосов
/ 28 февраля 2012

Вам нужно сопоставить несколько строк.

var text = $('.review-rating').text();
var matches = text.match(/(.+?)-\s*(.+?)(?:\n|\A)/m);
//matches[1] = oakberrels
//matches[2] = Dec 25, 2011
...