09.03.2012, 11:44
|
Интересующийся
|
|
Регистрация: 29.12.2010
Сообщений: 24
|
|
Регулярное выражение (Regexp)
Здравствуйте, суть задачи такова: есть большой текст, в нем имеются даты регистраций пользователей в формате dd-mm-yyy. При регистрации скрипт глюканул и год вместо 2012 подставился 2013.
Нужно при помощи регулярного выражения уменьшить все года на 1.
Задача какраз на регулярные выражения, поэтому советы по автозамене или по поправкам в БД прошу не предлагать.
Интересует именно - как это сделать в регулярном выражении.
Вот самый простой пример выражения, который я написал:
Pattern = "/\b(\d\d-\d\d-\d\d\d\d)/";
Сейчас верность формата даты не важна, важно понять как выцепить год, уменьшить его на 1 и вставить обратно в текст.
Заранее спасибо.
|
|
09.03.2012, 12:06
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
<script>
var str = 'olololo2013oololo'
var year = str.match(/2013/)[0] - 1
str = str.replace(/2013/, year)
alert(str)
</script>
__________________
оляля, ололо
Последний раз редактировалось 9xakep, 09.03.2012 в 12:08.
|
|
09.03.2012, 12:09
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
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)}))
|
|
09.03.2012, 12:11
|
Интересующийся
|
|
Регистрация: 29.12.2010
Сообщений: 24
|
|
класс, а если года разные в тексте, и их все надо уменьшить на 1?
|
|
09.03.2012, 12:15
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от martinss
|
класс, а если года разные в тексте, и их все надо уменьшить на 1?
|
Собственно, мой вариант это позволяет... Правда, я выцепляю дату целиком, т.к. возможен вариант появления просто 4-хзначного числа в тексте (теоретически). Если же нет, то:
var str = "20-12-2013. Все бухают. 21-12-2013. Все умерли.";
alert(str.replace(/\d{4}/g, function(substr){return substr-1}))
|
|
09.03.2012, 12:19
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
trikadin,
Как это работает О_о
1) str.replace(/(\d\d-\d\d-)(\d{4})/g Находим год, это понятно
2) function(substr, a, b) {return a+(b-1)} Откуда эти аргументы? Если не лень можешь статейку кинуть?
__________________
оляля, ололо
|
|
09.03.2012, 12:22
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
|
|
09.03.2012, 12:47
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
Ух ты! Круто
__________________
оляля, ололо
|
|
09.03.2012, 13:14
|
Интересующийся
|
|
Регистрация: 29.12.2010
Сообщений: 24
|
|
всем спасибо
|
|
|
|