Регулярные выражения в JS: только буквы и цифры

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы обработать буквенно-цифровые символы (буквы, цифры и подчёркивания) в JavaScript, используйте данное регулярное выражение: /^\w+$/.

Пример применения:

JS
Скопировать код
const regex = /^\w+$/;
const isValid = regex.test("Sample123"); // возвращает true для буквенно-цифровых символов

Изучение синтаксиса регулярного выражения

Понимание синтаксиса регулярных выражений может показаться нетривиальной задачей. Давайте разберем его отдельные элементы:

  • ^: устанавливает требование соответствия шаблона началу строки.
  • [a-z0-9]: выполняет поиск буквенно-цифровых символов — от a до z и от 0 до 9.
  • +: обозначает присутствие одного или нескольких символов, которые определены предыдущим элементом.
  • $: устанавливает соответствие шаблона концу строки.
  • /i: флаг указывает на поиск без учета регистра. Если важен учет регистра — нужно опустить этот флаг.

Кастомизация регулярного выражения

Если в вашем случае подчеркивания, которые присутствуют в сокращении \w, не требуются, их можно исключить, внеся изменения в ваш regex:

JS
Скопировать код
const regex = /^[A-Za-z0-9]+$/; // Убираем подчеркивания!
const isValid = regex.test("Sample123"); // возвращает true для буквенно-цифровых символов, исключая подчеркивание

Чтобы учесть не латинские алфавиты, используйте Unicode:

JS
Скопировать код
const regex = /^[\p{L}\p{N}]+$/u; // Поддержка персидских букв и цифр
const isValid = regex.test("مثال۱۲۳"); // true для персидских буквенно-цифровых символов

Здесь \p{L} соответствует любой букве в Unicode, \p{N} — любой цифре. Флаг u активирует поддержку Unicode.

Особенности работы и методы их решения

Работа с регулярными выражениями похожа на сборку кубика Рубика. Вот некоторые тонкости, которые стоит учитывать:

  • Пустые строки: замените + на *, чтобы допустить пустые строки. Убедитесь, что это соответствует вашим требованиям.
  • Специальные символы: если требуется допустить пробелы, подчеркивания или тире, расширьте выражение:

    JS
    Скопировать код
    const regex = /^[A-Za-z0-9 _-]+$/; // Допускаем пробелы, подчеркивания и тире
    const isValid = regex.test("Sample 123_"); // возвращает true для строк с пробелами и подчеркиваниями

Аспекты безопасности

Крайне важно учитывать разницу между буквенно-цифровыми символами различных языков. Для работы с символами Unicode воспользуйтесь классами /\p{Alphabetic}\p{Number}/ с флагом u.

JS
Скопировать код
const regex = /^[\p{L}\p{N}]+$/u; // Поддержка символов на основе Unicode

Познакомьтесь с таблицей символов Unicode, чтобы узнать больше о доступных классах символов.

Визуализация

Можно представить регулярные выражения в виде ворот, которые пропускают только определенные символы.

Markdown
Скопировать код
Разрешено: [A-Z, a-z, 0-9]

📄: "Hello123"
🔒: /^[A-Za-z0-9]+$/

Наш RegEx выступает в роли охранника на входе:

Markdown
Скопировать код
🚪🔑: /^[A-Za-z0-9]+$/

Оценка результатов:
"Hello123"    ✅
"Hi there!"   ❌  (Извините, пробелы и восклицательные знаки здесь не допускаются!)

Таким образом, мы поддерживаем наш "символьный сад" в порядке и аккуратности:

Markdown
Скопировать код
До: [🤖, 🚀, 💡, " ", "!", "@"]
После:  [🤖, 🚀, 💡]

Буквенно-цифровые символы допускаются, остальные должны ожидать своего разрешения!

Детальный разбор наборов символов

Если есть необходимость инвертировать логику и искать все, что не является буквенно-цифровыми символами, используйте [^a-z0-9]:

JS
Скопировать код
const regex = /[^a-z0-9]/gi; // Применяем поисковую логику ко всему, что не является буквенно-цифровыми символами, без учета регистра и на всей длине строки

Если вы хотите допустить буквенно-цифровые символы с пробелами, исключая знаки препинания и спецсимволы:

JS
Скопировать код
const regex = /^[A-Za-z0-9 ]+$/; // Разрешаем буквенно-цифровые символы и пробелы, исключая знаки препинания и спецсимволы

Внимательно подойдите к регистру символов: проверьте, соответствует ли применение флага /i вашим ожиданиям.

Полезные материалы

  1. Регулярные выражения – JavaScript | MDN — подробное руководство про регулярные выражения в JavaScript от MDN.
  2. RegExp.prototype.test() – JavaScript | MDN — документация метода .test() для RegEx на MDN.
  3. Как использовать регулярные выражения в JavaScript | Флавио Копес — обширное руководство про применение регулярных выражений в JavaScript.
  4. regex101: создание, тестирование и отладка regex — интерактивный инструмент для создания, тестирования и отладки регулярных выражений.
  5. ECMAScript 2015 Language Specification – ECMA-262 6th Edition — официальная спецификация ECMAScript об усовершенствованиях RegExp.
  6. Регулярные выражения | Javascript.info — обзор паттернов и флагов в регулярных выражениях JavaScript.
  7. Регулярные выражения :: Выразительный JavaScript — глава о регулярных выражениях из книги Выразительный JavaScript.