Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 01.03.2021, 10:40
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

С другими символами получилось. Изменил регулярку с
reg = reg.match(/(\{[^}]+?\})|(\+)|([()])|(\d)|(\s+)/g);
на
reg = reg.match( /(\{[^}]+?\})|(.)/g );

Теперь из 000.000,000a000 возвращает массив какой нужно:
["0", "0", "0", ".", "0", "0", "0", ",", "0", "0", "0", "a", "0", "0", "0"]


Но сейчас попробовал регулярку с вложенными фигурными скобками. Эта регулярка просто проверяет корректность российского почтового индекса.
let reg = '{/^[1-6]\d{0,5}$/}';

возвращает
[/^[1-6]d{0,/, "$", "/", "}"]

А нужно, чтобы вернул массив, содержащий 1 элемент:
[ /^[1-6]\d{0,5}$/ ]


Прошу прощения, может я выбрал как разделитель не тот символ. Может надо было вместо фигурных скобок использовать что-то другое, чтобы не было конфликтов.

Последний раз редактировалось Янковиц, 01.03.2021 в 10:47.
Ответить с цитированием
  #12 (permalink)  
Старый 01.03.2021, 11:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Янковиц,
<script>
const fun = str => {
let f = a => /\{[^\s]+\}/.test(a);
let r = a => new RegExp(a.slice(2,-2));
str = str.match(/(\{[^\s]+\})|(\+)|([()])|(.)|(\s+)/g);
str = str.map(a => a === '0' ? /\d/ : f(a) ? r(a) :  a);
return str
}
let reg =['{/^[1-6]\d{0,5}$/}', '+1({/[1-9]/}00) 000 000{/[1-9]/}','000.000,000a000'];
document.write(reg.map(fun).join('<br>'))
</script>
Ответить с цитированием
  #13 (permalink)  
Старый 01.03.2021, 11:26
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Спасибо большое!
Ответить с цитированием
  #14 (permalink)  
Старый 01.03.2021, 14:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Янковиц,
как обработать это '{/^[1-6]\d{0,5}$/}' я не знаю,или изначально нужно \\d
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно методом ajax вернуть ассоциативный массив js? Hurray AJAX и COMET 2 09.01.2016 00:19
Как преобразовать строку в объект axmed2004 Общие вопросы Javascript 4 20.11.2012 16:02
Массив как часть параметра diprom Javascript под браузер 3 21.09.2011 00:08
как найти и удалить массив из массива? FRIE Общие вопросы Javascript 8 14.03.2011 15:48
Как обрезать строку и добавить символы в середине, в зависимости от длинны строки andreyua Firefox/Mozilla 12 10.12.2010 15:44