2015-01-15 2 views
3

Я читал на этом форуме много раз, но теперь у меня есть вопрос о себе. Мне нужно заменить строку 01.01.2014 на 1. 1. 2014. Мне не удалось найти решение. Это самое близкое, что я пришел.jQuery replace on focusout

$('#date').focusout(function() { 
    var strText = $(this).val(); 
    strReplaceAll = strText.replace(new RegExp("01", "g"), "1. "); 
    alert(strReplaceAll); 
}); 

Это, однако возвращает строку 1. 1. 21. 4

Я попытался с .01 в Тре RegExp строки, но это возвращает 1. 1. 21.

Таким образом, кажется, что я не могу использовать «01.». Итак, как это можно сделать? Надеюсь, кто-то может помочь мне с этой проблемой.

Майкл

ответ

3

Регулярное выражение вы показываете, кажется неправильным. Должен ли он заменить 02.02.2014, 15.03.2023 и т. Д.? Если да, то вы должны использовать эту замену:

s.replace(/0(\d+)\./g, '$1. ') 

Примеры:

'01.01.2014'.replace(/0(\d+)\./g, '$1. ') // replaces to "1. 1. 2014" 
'23.04.2029'.replace(/0(\d+)\./g, '$1. ') // replaces to "23.4. 2029" 
'01.11.2029'.replace(/0(\d+)\./g, '$1. ') // replaces to "1. 11.2029" 

Другое решение (без регулярных выражений) ведет себя так же, как и предыдущий:

s = '01.01.2014' 
s.split('.').map(parseFloat).join('. ') // replaces to "1. 1. 2014" 
+1

Отлично работает. Спасибо огромное! –

0

В JavaScript вас может сделать это с:

var myregexp = /\b0(\d)\b/g; 
result = subject.replace(myregexp, "$1"); 
Смежные вопросы