Регулярные выражения — это мощный инструмент сопоставления строковых шаблонов. Освоение обычных регулярных выражений может значительно повысить эффективность работы со строками и обработки текста.

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 = {
    '&'…