Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2021, 09:30
Аспирант
Отправить личное сообщение для jabbascript Посмотреть профиль Найти все сообщения от jabbascript
 
Регистрация: 27.11.2017
Сообщений: 45

Как заменить строку вида +79218887755 или 777666
Здравствуйте!!!
Помогите понять как получая строку func('+79219997788') создать с помощью регулярки +7 921 999 77 88, а если func('997788') то 997 788, т е пробелы для таких '+79219997788' и таких номеров '997788'. И есть способ для 6тизначных менять вид на 99 77 88, но чтоб это все было в одной регулярке?
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2021, 09:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

jabbascript,
997788 сколько пробелов 2 или 1?
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2021, 09:58
Аспирант
Отправить личное сообщение для jabbascript Посмотреть профиль Найти все сообщения от jabbascript
 
Регистрация: 27.11.2017
Сообщений: 45

Сообщение от рони Посмотреть сообщение
jabbascript,
997788 сколько пробелов 2 или 1?
Один пробел.
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2021, 10:03
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от 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'));

Вместо пробелов поставил "-", для наглядности...
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2021, 10:06
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от jabbascript
И есть способ для 6тизначных менять вид на 99 77 88
Как вариант...
let val='997788';
let re=/(\d\d)(\d\d)(\d\d)/;
alert(val.replace(re,'$1-$2-$3'));
Ответить с цитированием
  #6 (permalink)  
Старый 10.03.2021, 10:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

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>
Ответить с цитированием
  #7 (permalink)  
Старый 10.03.2021, 10:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от 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>
Ответить с цитированием
  #8 (permalink)  
Старый 10.03.2021, 10:22
Аспирант
Отправить личное сообщение для jabbascript Посмотреть профиль Найти все сообщения от jabbascript
 
Регистрация: 27.11.2017
Сообщений: 45

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изменить поля в модели? Или как пересоздать модель? Risa ExtJS 3 20.02.2015 12:47
Как написать регулярное выражение, которое будет возвращать строку? Armen Общие вопросы Javascript 2 09.10.2014 22:29
Как получить в JQUERY каждую строку как отдельный объект? Alex1233 Общие вопросы Javascript 3 22.08.2014 06:54
Как соединить 2 div в одну строку или в один? vadim90k (X)HTML/CSS 3 03.09.2012 19:11
Chome 18.0.1025.142 Prompt() возвращает NULL как строку alexben Opera, Safari и др. 10 07.04.2012 16:33