Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   '03 ноя 2014'.replace(/(\d+)\s(\W+)\s(\d+)/,mth['$2']) результат undefined (https://javascript.ru/forum/misc/52099-%2703-noya-2014%27-replace-%5Cd-%5Cs-%5Cw-%5Cs-%5Cd-mth%5B%27%242%27%5D-rezultat-undefined.html)

Cache 04.12.2014 00:49

'03 ноя 2014'.replace(/(\d+)\s(\W+)\s(\d+)/,mth['$2']) результат undefined
 
доброго времени суток.
подскажите, почему при подстановке ключа в массив, получаю undefined?
var mth=[];mth['ноя']=11;
alert('03 ноя 2014'.replace(/(\d+)\s(\W+)\s(\d+)/,'$1.'+mth['$2']+'.$3'))

и как правильно построить данный запрос

P.S. результат данной замены: 03.undefined.2014, а требуется получить 03.11.2014

krutoy 04.12.2014 01:05

var mth=[];mth['ноя']=11;
alert('03 ноя 2014'.replace(/(\d+)\s(\w+)\s(\d+)/,'$1.'+mth['$2']+'.$3'))

Cache 04.12.2014 01:08

не вижу ни одного отличия в вашем коде, и результат хоть и не undefined, но и не тот что должен быть

krutoy 04.12.2014 01:10

Cache,
Цитата:

Сообщение от Cache
не вижу ни одного отличия в вашем коде, и результат хоть и не undefined, но и не тот что должен быть

Это было на:
Цитата:

Сообщение от Cache
подскажите, почему при подстановке ключа в массив, получаю undefined?

Вы помните иногда, что Вы спрашиваете?


Я пока не понял, что должно быть. Может быть Вы, таки, соизволите пояснить?

Cache 04.12.2014 01:11

krutoy, ноябрь должен быть заменен на 11 (значение ключа массива mth['ноя'])

Cache 04.12.2014 01:13

т.е. Из даты '03 ноя 2014' нужно получить '03.11.2014'

\w+ - здесь не подойдет, т.к. \w - это любой лат. символ, а русские буквы не подподают под понятие - латиница

рони 04.12.2014 01:22

Cache,
для такой замены используют функцию в replace -- параметры смотрите в документации

Cache 04.12.2014 01:26

рони, как пользоваться replace() - я знаю, и тут она, как бы и применяется, только чуть в другой форме
меня не устраивает вариант
alert('03 ноя 2014'.replace(' ноя ','.11.'));

по причине того, что месяцев, как вы понимаете - 12 и городить огород для перебора каждого значения - бред

рони 04.12.2014 01:28

Цитата:

Сообщение от рони
как пользоваться replace() - я знаю

Цитата:

Сообщение от рони
для такой замены используют функцию в replace -- параметры смотрите в документации

:(

krutoy 04.12.2014 01:30

Цитата:

Сообщение от Cache
т.е. Из даты '03 ноя 2014' нужно получить '03.11.2014'

var mth={};mth['ноя']=11;
str='03 ноя 2014'
re=/([а-я]+)/
alert(str.replace(re, function(v){return mth[v]}))


Часовой пояс GMT +3, время: 16:01.