Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как заменить строку вида +79218887755 или 777666 (https://javascript.ru/forum/dom-window/82093-kak-zamenit-stroku-vida-79218887755-ili-777666-a.html)

jabbascript 10.03.2021 09:30

Как заменить строку вида +79218887755 или 777666
 
Здравствуйте!!!
Помогите понять как получая строку func('+79219997788') создать с помощью регулярки +7 921 999 77 88, а если func('997788') то 997 788, т е пробелы для таких '+79219997788' и таких номеров '997788'. И есть способ для 6тизначных менять вид на 99 77 88, но чтоб это все было в одной регулярке?

рони 10.03.2021 09:52

jabbascript,
997788 сколько пробелов 2 или 1?

jabbascript 10.03.2021 09:58

Цитата:

Сообщение от рони (Сообщение 534580)
jabbascript,
997788 сколько пробелов 2 или 1?

Один пробел.

ksa 10.03.2021 10:03

Цитата:

Сообщение от jabbascript
Помогите понять как получая строку func('+79219997788') создать с помощью регулярки +7 921 999 77 88, а если func('997788') то 997 788, т е пробелы для таких '+79219997788' и таких номеров '997788'.

Как вариант...

let val='+79219997788';
let re=/(\+\d)(\d{3})(\d{3})(\d\d)(\d\d)/;
alert(val.replace(re,'$1($2)$3-$4-$5'));
val='997788';
re=/(\d{3})(\d{3})/;
alert(val.replace(re,'$1-$2'));

Вместо пробелов поставил "-", для наглядности...

ksa 10.03.2021 10:06

Цитата:

Сообщение от jabbascript
И есть способ для 6тизначных менять вид на 99 77 88

Как вариант...
let val='997788';
let re=/(\d\d)(\d\d)(\d\d)/;
alert(val.replace(re,'$1-$2-$3'));

рони 10.03.2021 10:08

jabbascript,
<script>
let reg = /(\+7|\d{3}(?=\d{3})|\d{2}(?=\d{2}))/g;
const func = str => str.replace(reg, `$1 `)
document.write(func('+79219997788') + '<br>')
document.write(func('997788') + '<br>' )
document.write(func('+79219997788') + '<br>')
document.write(func('997788') + '<br>' )
</script>

рони 10.03.2021 10:10

Цитата:

Сообщение от jabbascript
И есть способ для 6тизначных менять вид на 99 77 88, но чтоб это все было в одной регулярке?

<script>
let reg = /(\+7|\d{3}(?=\d{4})|\d{2}(?=\d{2}))/g;
const func = str => str.replace(reg, `$1 `)
document.write(func('+79219997788') + '<br>')
document.write(func('997788') + '<br>' )
document.write(func('+79219997788') + '<br>')
document.write(func('997788') + '<br>' )
</script>

jabbascript 10.03.2021 10:22

Всем спасибо помогло! надо почитать про такие еще символы (?= и понять их. Просто оч редко эти регулярки нужны мне были.


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