EmBroidery
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору YuS 2 в Chrome и Node, которые поддерживают lookbehind Mavrikii вот пример функции: const convert = str => str.replace(/(?<=(\d+)\/?(\d*)")/g, (_, gr1, gr2) => ` (${gr1 / (gr2 || 1) * 2.54} mm)`); console.log(convert(`1"`)); -> 1" (2.54 mm) console.log(convert(`1/2"`)); -> 1/2" (1.27 mm) console.log(convert(`3/4"`)); -> 3/4" (1.905 mm) console.log(convert(`10"`)); -> 10" (Infinity mm) console.log(convert(`12"`)); -> 12" (1.27 mm) два последних вызова выглядят удручающе RegexBuddy показывает именно такое распределение по группам, как я описывал выше. Но при lookahead (?=(\d+)\/?(\d*)") у RegexBuddy с группами всё в порядке. И при таком вызове функции проблем не наблюдается: const convert = str => str.replace(/(?=(\d+)\/?(\d*)")/, (_, gr1, gr2) => `(${gr1 / (gr2 || 1) * 2.54} mm) `); console.log(convert(`1"`)); -> (2.54 mm) 1" console.log(convert(`1/2"`)); -> (1.27 mm) 1/2" console.log(convert(`3/4"`)); -> (1.905 mm) 3/4" console.log(convert(`10"`)); -> (25.4 mm) 10" console.log(convert(`12"`)); -> (30.48 mm) 12" | Всего записей: 20 | Зарегистр. 31-03-2010 | Отправлено: 11:36 25-03-2020 | Исправлено: EmBroidery, 13:02 25-03-2020 |
|