Я бы использовал регулярное выражение :
var text = $('div').attr('data-params');
var dates = text.match(/start=\d{4}-\d{2}-\d{2}&end=\d{4}-\d{2}-\d{2}/)[0]
// dates => "start=2011-11-01&end=2011-11-30"
Регулярное выражение не слишком сложно. Обозначение \d
означает «соответствовать любой цифре», а \d{4}
означает «точно соответствовать 4 цифрам». Остальные буквальные символы. Итак, вы можете увидеть, как это работает. Наконец, [0]
в конце объясняется тем, что javascript match возвращает массив, где первый элемент - это полное совпадение, а остальные - подгруппы. У нас нет подгрупп, и мы хотим получить полное совпадение, поэтому мы просто берем первый элемент, поэтому [0]
.
Если вы хотите вывести фактические даты вместо полной строки запроса, вы можете создать подгруппы для сопоставления, добавив скобки вокруг нужных вам частей, например:
var dates = text.match(/start=(\d{4}-\d{2}-\d{2})&end=(\d{4}-\d{2}-\d{2})/)
// dates[0] => "start=2011-11-01&end=2011-11-30"
// dates[1] => "2011-11-01"
// dates[2] => "2011-11-30"
Здесь dates[1]
- это дата начала (первая подгруппа основана на скобках), а dates[2]
- это дата окончания (вторая подгруппа).