Регулярное выражение для соответствия либо az, либо 0-9 в любом порядке любой длины или точной строки N/A

Я хочу, чтобы регулярное выражение соответствовало символам az или 0-9 любой длины, любого порядка или точной строки N/A.

Совпадающие и несовпадающие примеры приведены ниже:

  1. N/A - совпадение

  2. asd6fg - совпадение

  3. 123asd - совпадение

  4. asd234 - совпадение

  5. 12sd23 - совпадение

  6. as23fd - совпадение

  7. NA - не совпадает

  8. N/AN/A - не соответствует

  9. N/ - не соответствует

  10. N - не соответствует

  11. 123N/A - не соответствует

  12. abcN/A - не соответствует

  13. a1bN/A - не соответствует

  14. N/Aab2 - не совпадает

  15. AS123 - не соответствует

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это должно сделать это:

^(?:[a-z\d]+|N/A)$

^ указывает на начало ввода, (?:...) создает группу без захвата; тогда либо [all lowercase letters and \digits]+, либо |N/A совпадают. $ отмечает конец ввода

что такое группа без захвата? означает ли это, что не захватывайте оба, а просто захватывайте один из обоих?

Kitty 31.03.2023 04:31

Если вы используете группу захвата, как в ответе @Michael_M, совпавшая подстрока будет храниться в памяти, и вы сможете ссылаться на нее в том же регулярном выражении или в результирующем массиве совпадений. См. MDN для справки. Если вы запустите его на большом наборе данных, потеря производительности может стать ощутимой. В этом случае лучше использовать группу без захвата, которая выполняет работу по группировке, не занимая лишней памяти.

biinster 31.03.2023 12:41

Просто используйте это:

^([a-z0-9]+|N/A)$

Объяснение:

  • ^ и $ говорят о начале и конце строки соответственно. Помещая их в конце регулярного выражения, вы говорите, что оно должно совпадать только в том случае, если оно может совпасть со всем. Это все или ничего.
  • [a-z0-9]+ будет соответствовать az и 0-9 один или несколько раз.
  • | — логическое ИЛИ. Он будет соответствовать либо тому, что было перед ним ([a-z0-9]+), либо тому, что было после него, что...
  • N/A что является точной строкой «Н/Д». Вам нужно сбежать от этого / персонажа.

Пример:

const regex = /^([a-z0-9]+|N/A)$/;

// match
console.info(regex.test('N/A'));
console.info(regex.test('123abc'));
console.info(regex.test('abc123'));

// don't match
console.info(regex.test('N/AN/A'));
console.info(regex.test('123ABC'));
console.info(regex.test('ABC123'));

Другие вопросы по теме

Регулярное выражение для соответствия цифрам 0-9 любой длины или точной строке Н/Д
Как разделить строку между запятыми, одним или несколькими пробелами и между цифрами и буквами, но не между точками с регулярным выражением в java?
Поиск при наличии квадратных скобок
Странное поведение регулярного выражения JS
URL-адрес htaccess переписан с папками виртуального языка, удваивает имя страницы как папку в URL-адресе
Регулярное выражение для идентификации символов в ключевом слове
Регулярное выражение для сложного имени файла
Извлечение нескольких строк из строки Pandas (одна ячейка) в столбцы с определенным начальным и конечным текстом
Шаблон регулярного выражения, который соответствует всем словам, начинающимся со слова с буквы s и заканчивающимся перед словом, начинающимся с буквы s
Как конвертировать в Notepad++ с помощью регулярных выражений?