Регулярные выражения — это мощный инструмент сопоставления строковых шаблонов. Освоение обычных регулярных выражений может значительно повысить эффективность работы со строками и обработки текста.
1. Форматирование валюты
Мне часто приходится использовать форматированную валюту в своей работе, и использование регулярных выражений делает это очень простым.
const formatPrice = (price) => { const regexp = new RegExp(`(?!^)(?=(\d{3})+${price.includes('.') ? '\.' : '$'})`, 'g') return price.replace(regexp, ',') } formatPrice('123') // 123 formatPrice('1234') // 1,234 formatPrice('123456') // 123,456 formatPrice('123456789') // 123,456,789 formatPrice('123456789.123') // 123,456,789.123
У вас есть другие методы? Использование междунар. NumberFormat — мой любимый способ.
const format = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }) console.log(format.format(123456789.123)) // $123,456,789.12
Есть более чем один способ исправить это! У меня есть другой способ сделать меня счастливой.
const amount = 1234567.89 const formatter = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }) console.log(formatter.format(amount)) // $1,234,567.89
Почему я должен изучать регулярное выражение? Это выглядит так сложно! Я потерял уверенность.
Успокойся, друг мой, и ты увидишь магию регулярных выражений.
Два способа удаления строковых пробелов
Что мне делать, если я хочу удалить начальные и конечные пробелы из строки?
console.log(' medium '.trim())
Это очень просто, верно? Конечно, с помощью регулярных выражений мы можем сделать это как минимум двумя способами.
Первый вариант
const trim = (str) => { return str.replace(/^\s*|\s*$/g, '') } trim(' medium ') // 'medium'
Вариант 2
const trim = (str) => { return str.replace(/^\s*(.*?)\s*$/g, '$1') } trim(' medium ') // 'medium'
3. Экранирование HTML
Одним из способов предотвращения XSS-атак является экранирование HTML. Правила выхода следующие, и соответствующий символ должен быть преобразован в эквивалентную сущность. Инверсия заключается в преобразовании экранированного объекта в соответствующий символ.
const escape = (string) => { const escapeMaps = { '&'…