Регулярное выражение (Regexp)
Здравствуйте, суть задачи такова: есть большой текст, в нем имеются даты регистраций пользователей в формате dd-mm-yyy. При регистрации скрипт глюканул и год вместо 2012 подставился 2013.
Нужно при помощи регулярного выражения уменьшить все года на 1. Задача какраз на регулярные выражения, поэтому советы по автозамене или по поправкам в БД прошу не предлагать. Интересует именно - как это сделать в регулярном выражении. Вот самый простой пример выражения, который я написал: Pattern = "/\b(\d\d-\d\d-\d\d\d\d)/"; Сейчас верность формата даты не важна, важно понять как выцепить год, уменьшить его на 1 и вставить обратно в текст. Заранее спасибо. |
<script> var str = 'olololo2013oololo' var year = str.match(/2013/)[0] - 1 str = str.replace(/2013/, year) alert(str) </script> |
var str = "20-12-2013. Все бухают. 21-12-2013. Все умерли."; alert(str.replace(/(\d\d-\d\d-)(\d{4})/g, function(substr, a, b) {return a+(b-1)})) |
класс, а если года разные в тексте, и их все надо уменьшить на 1?
|
Цитата:
var str = "20-12-2013. Все бухают. 21-12-2013. Все умерли."; alert(str.replace(/\d{4}/g, function(substr){return substr-1})) |
trikadin,
Как это работает О_о 1) str.replace(/(\d\d-\d\d-)(\d{4})/g Находим год, это понятно 2) function(substr, a, b) {return a+(b-1)} Откуда эти аргументы? Если не лень можешь статейку кинуть? |
|
Ух ты! Круто :)
|
всем спасибо
|
Часовой пояс GMT +3, время: 07:22. |