С другими символами получилось. Изменил регулярку с
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}$/ ]
Прошу прощения, может я выбрал как разделитель не тот символ. Может надо было вместо фигурных скобок использовать что-то другое, чтобы не было конфликтов. |
Янковиц,
<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>
|
Спасибо большое!
|
Янковиц,
как обработать это '{/^[1-6]\d{0,5}$/}' я не знаю,или изначально нужно \\d |
| Часовой пояс GMT +3, время: 16:47. |