Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите отредактировать регулярное выражение (https://javascript.ru/forum/jquery/57626-pomogite-otredaktirovat-regulyarnoe-vyrazhenie.html)

ligisayan 12.08.2015 13:02

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

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

trikadin 12.08.2015 13:14

Про разбиение числа на разряды (кстати, разряды разделяются пробелами, а не точками) уже было.
http://javascript.ru/forum/events/24...-razryady.html

А в вашем случае надо хранить отдельно число, отдельно валюту, и в зависимости от валюты спереди или сзади к числу конкатить знак доллара или рубля.

ligisayan 12.08.2015 13:28

Цитата:

Сообщение от trikadin (Сообщение 383847)
Про разбиение числа на разряды (кстати, разряды разделяются пробелами, а не точками) уже было.
http://javascript.ru/forum/events/24...-razryady.html

А в вашем случае надо хранить отдельно число, отдельно валюту, и в зависимости от валюты спереди или сзади к числу конкатить знак доллара или рубля.

trikadin мне не важно как они разделяются в теории - мне нужно разделить их именно точками и точка :) знаете как изменить мое регулярное выражение? - вопрос ведь только в этом
и не нужно мне ничего хранить отдельно - я же уже писал - меня интересует только рубли и только русская локализация без всяких долларов

рони 12.08.2015 13:38

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>

trikadin 12.08.2015 13:42

рони, я скоро начну давать бан на день за неиспользование поиска :)

ligisayan 12.08.2015 14:18

Цитата:

Сообщение от рони (Сообщение 383851)
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
ну и соответственно бяка получается в таком виде

ligisayan 12.08.2015 14:21

Цитата:

Сообщение от trikadin (Сообщение 383852)
рони, я скоро начну давать бан на день за неиспользование поиска :)

trikadin я чуть выше пояснил, что строкой ошибся и почему не получается воспользоваться готовым методом с поиска

рони 12.08.2015 14:28

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>

ligisayan 12.08.2015 16:29

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


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