Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.08.2015, 13:02
Кандидат Javascript-наук
Отправить личное сообщение для ligisayan Посмотреть профиль Найти все сообщения от ligisayan
 
Регистрация: 19.06.2015
Сообщений: 114

Помогите отредактировать регулярное выражение
Привет. Есть у меня англоязычный шаблон, которому делаю локализацию.
Столкнулся с задачей перевода символов в отображении цены, т.к. в английской цены вводятся в виде `$45`, т.е. знак доллара на первом месте, а потом число, а в русскоязычном наоборот, сначала значение, а потом `руб.`
Исходное значение подается в таком виде, где `р` - кириллические символы букв:
value = руб.260000
var out = value.replace(/^([^\d]*)([\d]*)/g,'$2 $1').replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1.');

В результате окончательного преобразования получаю
`260000руб.`
а хотелось бы, чтобы был пробел после числа и точкой разделялись тысячи, миллионы, миллиарды, т.е. 260.000 руб.

Последний раз редактировалось ligisayan, 12.08.2015 в 14:19.
Ответить с цитированием
  #2 (permalink)  
Старый 12.08.2015, 13:14
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Про разбиение числа на разряды (кстати, разряды разделяются пробелами, а не точками) уже было.
Разделить число на разряды

А в вашем случае надо хранить отдельно число, отдельно валюту, и в зависимости от валюты спереди или сзади к числу конкатить знак доллара или рубля.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #3 (permalink)  
Старый 12.08.2015, 13:28
Кандидат Javascript-наук
Отправить личное сообщение для ligisayan Посмотреть профиль Найти все сообщения от ligisayan
 
Регистрация: 19.06.2015
Сообщений: 114

Сообщение от trikadin Посмотреть сообщение
Про разбиение числа на разряды (кстати, разряды разделяются пробелами, а не точками) уже было.
Разделить число на разряды

А в вашем случае надо хранить отдельно число, отдельно валюту, и в зависимости от валюты спереди или сзади к числу конкатить знак доллара или рубля.
trikadin мне не важно как они разделяются в теории - мне нужно разделить их именно точками и точка знаете как изменить мое регулярное выражение? - вопрос ведь только в этом
и не нужно мне ничего хранить отдельно - я же уже писал - меня интересует только рубли и только русская локализация без всяких долларов
Ответить с цитированием
  #4 (permalink)  
Старый 12.08.2015, 13:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

ligisayan,
вам же trikadin, дал готовое решение
<script>
value = "260000&#x440;&#x443;&#x431;."
var out = value.replace(/^([^\d]*)([\d]*)/g,'$2 $1').replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1.');
document.write(out)
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 12.08.2015, 13:42
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

рони, я скоро начну давать бан на день за неиспользование поиска
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #6 (permalink)  
Старый 12.08.2015, 14:18
Кандидат Javascript-наук
Отправить личное сообщение для ligisayan Посмотреть профиль Найти все сообщения от ligisayan
 
Регистрация: 19.06.2015
Сообщений: 114

Сообщение от рони Посмотреть сообщение
ligisayan,
вам же trikadin, дал готовое решение
<script>
value = "260000&#x440;&#x443;&#x431;."
var out = value.replace(/^([^\d]*)([\d]*)/g,'$2 $1').replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1.');
document.write(out)
</script>
сорри ребят, сам виноват, не ту строку изначальную добавил - исправил в шапке
value вот в таком перевернутом изначально виде &#x440;&#x443;&#x431;.260000
ну и соответственно бяка получается в таком виде
Ответить с цитированием
  #7 (permalink)  
Старый 12.08.2015, 14:21
Кандидат Javascript-наук
Отправить личное сообщение для ligisayan Посмотреть профиль Найти все сообщения от ligisayan
 
Регистрация: 19.06.2015
Сообщений: 114

Сообщение от trikadin Посмотреть сообщение
рони, я скоро начну давать бан на день за неиспользование поиска
trikadin я чуть выше пояснил, что строкой ошибся и почему не получается воспользоваться готовым методом с поиска
Ответить с цитированием
  #8 (permalink)  
Старый 12.08.2015, 14:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

ligisayan,
<script>
var value = "&#x440;&#x443;&#x431;.260000";
var out = value.replace(/^(.*?)(\d+)$/g,'$2 $1').replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1.');
document.write(out)
</script>
Ответить с цитированием
  #9 (permalink)  
Старый 12.08.2015, 16:29
Кандидат Javascript-наук
Отправить личное сообщение для ligisayan Посмотреть профиль Найти все сообщения от ligisayan
 
Регистрация: 19.06.2015
Сообщений: 114

рони вот так все класс - благодарю!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите составить регулярное выражение yura29 Общие вопросы Javascript 3 08.06.2014 00:35
Помогите написать регулярное выражение bigjoy Общие вопросы Javascript 2 15.02.2014 23:23
Помогите, пожалуйста, составить регулярное выражение sbudyakov Общие вопросы Javascript 5 07.08.2013 22:51
Помогите написать регулярное выражение! Dorian_bs Общие вопросы Javascript 7 09.12.2011 09:12
регулярное выражение, помогите serhanters jQuery 2 12.07.2011 10:14