Регулярные выражения в JS: только буквы и цифры
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Чтобы обработать буквенно-цифровые символы (буквы, цифры и подчёркивания) в JavaScript, используйте данное регулярное выражение: /^\w+$/
.
Пример применения:
const regex = /^\w+$/;
const isValid = regex.test("Sample123"); // возвращает true для буквенно-цифровых символов
Изучение синтаксиса регулярного выражения
Понимание синтаксиса регулярных выражений может показаться нетривиальной задачей. Давайте разберем его отдельные элементы:
^
: устанавливает требование соответствия шаблона началу строки.[a-z0-9]
: выполняет поиск буквенно-цифровых символов — от a до z и от 0 до 9.+
: обозначает присутствие одного или нескольких символов, которые определены предыдущим элементом.$
: устанавливает соответствие шаблона концу строки./i
: флаг указывает на поиск без учета регистра. Если важен учет регистра — нужно опустить этот флаг.
Кастомизация регулярного выражения
Если в вашем случае подчеркивания, которые присутствуют в сокращении \w
, не требуются, их можно исключить, внеся изменения в ваш regex:
const regex = /^[A-Za-z0-9]+$/; // Убираем подчеркивания!
const isValid = regex.test("Sample123"); // возвращает true для буквенно-цифровых символов, исключая подчеркивание
Чтобы учесть не латинские алфавиты, используйте Unicode:
const regex = /^[\p{L}\p{N}]+$/u; // Поддержка персидских букв и цифр
const isValid = regex.test("مثال۱۲۳"); // true для персидских буквенно-цифровых символов
Здесь \p{L}
соответствует любой букве в Unicode, \p{N}
— любой цифре. Флаг u
активирует поддержку Unicode.
Особенности работы и методы их решения
Работа с регулярными выражениями похожа на сборку кубика Рубика. Вот некоторые тонкости, которые стоит учитывать:
- Пустые строки: замените
+
на*
, чтобы допустить пустые строки. Убедитесь, что это соответствует вашим требованиям. Специальные символы: если требуется допустить пробелы, подчеркивания или тире, расширьте выражение:
const regex = /^[A-Za-z0-9 _-]+$/; // Допускаем пробелы, подчеркивания и тире const isValid = regex.test("Sample 123_"); // возвращает true для строк с пробелами и подчеркиваниями
Аспекты безопасности
Крайне важно учитывать разницу между буквенно-цифровыми символами различных языков. Для работы с символами Unicode воспользуйтесь классами /\p{Alphabetic}\p{Number}/
с флагом u
.
const regex = /^[\p{L}\p{N}]+$/u; // Поддержка символов на основе Unicode
Познакомьтесь с таблицей символов Unicode, чтобы узнать больше о доступных классах символов.
Визуализация
Можно представить регулярные выражения в виде ворот, которые пропускают только определенные символы.
Разрешено: [A-Z, a-z, 0-9]
📄: "Hello123"
🔒: /^[A-Za-z0-9]+$/
Наш RegEx выступает в роли охранника на входе:
🚪🔑: /^[A-Za-z0-9]+$/
Оценка результатов:
"Hello123" ✅
"Hi there!" ❌ (Извините, пробелы и восклицательные знаки здесь не допускаются!)
Таким образом, мы поддерживаем наш "символьный сад" в порядке и аккуратности:
До: [🤖, 🚀, 💡, " ", "!", "@"]
После: [🤖, 🚀, 💡]
Буквенно-цифровые символы допускаются, остальные должны ожидать своего разрешения!
Детальный разбор наборов символов
Если есть необходимость инвертировать логику и искать все, что не является буквенно-цифровыми символами, используйте [^a-z0-9]
:
const regex = /[^a-z0-9]/gi; // Применяем поисковую логику ко всему, что не является буквенно-цифровыми символами, без учета регистра и на всей длине строки
Если вы хотите допустить буквенно-цифровые символы с пробелами, исключая знаки препинания и спецсимволы:
const regex = /^[A-Za-z0-9 ]+$/; // Разрешаем буквенно-цифровые символы и пробелы, исключая знаки препинания и спецсимволы
Внимательно подойдите к регистру символов: проверьте, соответствует ли применение флага /i
вашим ожиданиям.
Полезные материалы
- Регулярные выражения – JavaScript | MDN — подробное руководство про регулярные выражения в JavaScript от MDN.
- RegExp.prototype.test() – JavaScript | MDN — документация метода
.test()
для RegEx на MDN. - Как использовать регулярные выражения в JavaScript | Флавио Копес — обширное руководство про применение регулярных выражений в JavaScript.
- regex101: создание, тестирование и отладка regex — интерактивный инструмент для создания, тестирования и отладки регулярных выражений.
- ECMAScript 2015 Language Specification – ECMA-262 6th Edition — официальная спецификация ECMAScript об усовершенствованиях RegExp.
- Регулярные выражения | Javascript.info — обзор паттернов и флагов в регулярных выражениях JavaScript.
- Регулярные выражения :: Выразительный JavaScript — глава о регулярных выражениях из книги Выразительный JavaScript.