Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.03.2012, 11:44
Интересующийся
Отправить личное сообщение для martinss Посмотреть профиль Найти все сообщения от martinss
 
Регистрация: 29.12.2010
Сообщений: 24

Регулярное выражение (Regexp)
Здравствуйте, суть задачи такова: есть большой текст, в нем имеются даты регистраций пользователей в формате dd-mm-yyy. При регистрации скрипт глюканул и год вместо 2012 подставился 2013.
Нужно при помощи регулярного выражения уменьшить все года на 1.
Задача какраз на регулярные выражения, поэтому советы по автозамене или по поправкам в БД прошу не предлагать.
Интересует именно - как это сделать в регулярном выражении.
Вот самый простой пример выражения, который я написал:
Pattern = "/\b(\d\d-\d\d-\d\d\d\d)/";
Сейчас верность формата даты не важна, важно понять как выцепить год, уменьшить его на 1 и вставить обратно в текст.

Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 09.03.2012, 12:06
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 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.
Ответить с цитированием
  #3 (permalink)  
Старый 09.03.2012, 12:09
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 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)}))
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #4 (permalink)  
Старый 09.03.2012, 12:11
Интересующийся
Отправить личное сообщение для martinss Посмотреть профиль Найти все сообщения от martinss
 
Регистрация: 29.12.2010
Сообщений: 24

класс, а если года разные в тексте, и их все надо уменьшить на 1?
Ответить с цитированием
  #5 (permalink)  
Старый 09.03.2012, 12:15
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 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}))
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #6 (permalink)  
Старый 09.03.2012, 12:19
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 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)} Откуда эти аргументы? Если не лень можешь статейку кинуть?
__________________
оляля, ололо
Ответить с цитированием
  #7 (permalink)  
Старый 09.03.2012, 12:22
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

9xakep, всё на этом сайте)

http://javascript.ru/basic/regular-e...herez-funkciyu
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #8 (permalink)  
Старый 09.03.2012, 12:47
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Ух ты! Круто
__________________
оляля, ололо
Ответить с цитированием
  #9 (permalink)  
Старый 09.03.2012, 13:14
Интересующийся
Отправить личное сообщение для martinss Посмотреть профиль Найти все сообщения от martinss
 
Регистрация: 29.12.2010
Сообщений: 24

всем спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка e-mail регулярное выражение mycoding Общие вопросы Javascript 4 09.02.2017 10:12
регулярное выражение leny Общие вопросы Javascript 1 24.09.2011 17:30
регулярное выражение martinss jQuery 5 29.07.2011 12:46
Регулярное выражение: любой символ, включая перевод строки Gleb Общие вопросы Javascript 3 28.07.2011 12:15
регулярное выражение theo_ Общие вопросы Javascript 15 21.06.2010 10:29