Регулярные выражения javascript задачи

Разминаем мозг регулярными выражениями — Regex Tuesday Challenge

Я хочу предложить вам поломать голову вечерок-другой над интересными задачками, на регулярные выражения, которые Callum Macrae выкладывает на своем сайте на GitHub каждый Вторник.

Каждый вопрос представлен в виде набора тестов. Задача — написать такой регулярное выражение, чтобы все тесты стали зелеными.
Некоторые из задач сами по себе довольно простые, а самая интересная часть — в том, чтобы написать наиболее короткое возможное регулярное выражение.

Тесты используют JavaScript Regex движок вашего браузера, который обладает всеми основными возможностями PCRE. Подробнее можно посмотреть тут (англ.) , в колонке ECMA в таблице.

Я собрал в этой статье русские версии задач и материалов, которые могут помочь в их решении. Было бы интересно увидеть самые интересные решения в комментах.

UPD: В регулярных выражениях ECMAScript нету ретроспективных проверок.

1. Выделяем повторяющиеся слова (Ссылка ведет на задачу)

Задача:

Выделить тегом повторяющиеся слова.

Читайте также:  Php ini где лежит joomla
Примеры:

2. Оттенки серого

Задача:

Выбрать отенки серого в разных цветовых системах.
Почитать про цвета можно по этой ссылке.

Примеры:

3. Даты найти строки сответствующем этому шаблону: YYYY/MM/DD HH:MM(:SS)

Задача:

Выбрать существующие даты между 1000 и 2012 годом. Секунды могут быть опущены.
Автор облегчает задачу: в каждом месяце 30 дней.

Примеры:

4. Курсив в MarkDown

Задача:

Преобразовать текст, обрамленный в звездочки, в курсив. Не трогать текст в двойных звездочках (жирный).
Почитать подробнее про MarkDown можно в википедии.

Примеры:

5. Числа

Задача:

Выбрать числа с запятой или пробелом, в качестве разделителя разрядов. (к счастью обошлось без моммайе)

Примеры:

6. IPv4 адреса

Задача:

Выбрать IPv4 адреса во всех возможных, представлениях: десятичном, шестнадцатеричном и восьмеричном. С точками и без. Подробнее про IP адреса можно узнать в википедии

7. Доменные имена

Задача:

Доменные имена для протоколов http и https, с необязательным слешем в конце. Специальые символы не используются.

8. Повторяющиеся пункты в списке MarkDown

Задача:

Найти и выделить жирным (**) повтряющиеся пункты в MarkDown-списке.

Примеры:

9. Ссылки в MarkDown

Задача:

Преобразовать MarkDown ссылки в HTML. Выглядят вот так: [text](http://example.com)
Главное не перепутать с картинками: ![alt text](image location)

Примеры:

10. Делим предложение на токены.

Задача:

Разбить предложение на токены. Это может быть полезно, например, для поисковой системы.

    Несколько слов в кавычках должны попасть в один токен

11. Буквы в алфавитном порядке.

Задача:

Выбрать последовательность неповторяющихся символов в алфавитнои порядке.Пробелы нужно игнорировать. К сожалению известные мне решения не очень удачны.

Примеры:

12. Исправляем пробелы

Задача:

Убрать повторяющиеся пробелы и знаки табуляции, оставить по одному пробелу между словами и по два между предложениями.

Примеры:

13. Повторяющиеся слова друг под другом

Задача:

Выбрать повторяющиеся слова, которые находятся непосредственно друг под другом.
Предполагается использование моноширинного шрифта. Строки длиннее 32х символов переносятся.

Примеры:

14. Брутфорсим химические элементы

Задача:

>Выбираем первые 50 химических элементов таблицы менделеева. Решение довольно очевидное, поэтому задача — найти максимально короткое решение.

15. Музыкальные аккорды

Задача:

Выбрать музыкальные аккорлы, например как Cmin, или Bmaj. Нужны и краткая и полная записи. Для данной задачи предпложим, что аккорды E♯, B♯, F♭ and C♭ не существует.

Так же обратите внимание, что диез (♯)
это не то же самое, что решетка (#).

Примеры:

16. Брутфорсим химические элементы

Задача:

Выбрать химические элементы с атомным числом больше 50.

Примеры:

17. Регулярное выражение для регулярного выражения.

Задача:

Выбрать правильно построенное регулярное выражение.Для начала ограничимся литералами (возможно экранированными), классами и несколькими квантификаторами.

Примеры:

18. IRC — Сообщения

Задача:

Выбрать правильно сформированное IRC сообщение.
Вот ссылка на русскую версию спецификаци.

Источник

Проверка JavaScript с регулярным выражением — Упражнения, Практика, Решение

Проверка JavaScript с регулярным выражением [21 упражнение с решением]

[ Внизу страницы доступен редактор для написания и выполнения сценариев. ]

1. Напишите программу JavaScript, чтобы проверить, является ли первый символ строки прописным или нет. Перейти к редактору
Нажмите меня, чтобы увидеть решение

2. Напишите программу JavaScript для проверки номера кредитной карты. Перейти к редактору
Нажмите меня, чтобы увидеть решение

3. Напишите шаблон, который соответствует адресам электронной почты. Перейти к редактору
Часть личной информации содержит следующие символы ASCII.

  • Прописные (AZ) и строчные (az) английские буквы.
  • Цифры (0-9).
  • Персонажи ! # $% & ‘* + — / =? ^ _ ` <| >~
  • Символ . (точка, точка или полная остановка) при условии, что это не первый или последний символ, и он не будет приходить один за другим.

4. Напишите программу на JavaScript для поиска даты в строке. Перейти к редактору

5. Напишите программу на JavaScript, которая работает как функция обрезки (строка) с использованием регулярного выражения. Перейти к редактору

6. Напишите программу на JavaScript для подсчета количества слов в строке. Перейти к редактору
Примечание :
— Удалить пробел из начальной и конечной позиции.
— Конвертировать 2 или более пробелов в 1.
— Исключить перевод строки с начальным интервалом.

7. Напишите функцию JavaScript, чтобы проверить, является ли данное значение значением IP или нет. Перейти к редактору

8. Напишите функцию JavaScript для подсчета количества гласных в данной строке. Перейти к редактору
Тестовые данные :
console.log (alphabetize_string (‘Соединенные Штаты’));
Выход :
«SUadeeinsttt»

9. Напишите функцию JavaScript, чтобы проверить, является ли данное значение допустимым URL-адресом или нет. Перейти к редактору

10. Напишите функцию JavaScript, чтобы проверить, является ли данное значение буквенно-цифровым или нет. Перейти к редактору

11. Напишите функцию JavaScript, чтобы проверить, является ли данное значение временной строкой или нет. Перейти к редактору

12. Напишите функцию JavaScript, чтобы проверить, является ли данное значение почтовым индексом США или нет. Перейти к редактору

13. Напишите функцию JavaScript, чтобы проверить, является ли данное значение почтовым индексом Великобритании или нет. Перейти к редактору

14. Напишите функцию JavaScript, чтобы проверить, является ли данное значение почтовым индексом Канады или нет. Перейти к редактору

15. Напишите функцию JavaScript, чтобы проверить, является ли данное значение номером социального страхования или нет. Перейти к редактору

16. Напишите функцию JavaScript, чтобы проверить, является ли данное значение шестнадцатеричным значением или нет. Перейти к редактору

17. Напишите функцию JavaScript, чтобы проверить, является ли данное значение шестнадцатеричным значением или нет. Перейти к редактору

18. Напишите функцию JavaScript, чтобы проверить, представляет ли данное значение домен или нет. Перейти к редактору

19. Напишите функцию JavaScript, чтобы проверить, является ли данное значение HTML или нет. Перейти к редактору

20. Напишите функцию JavaScript, чтобы проверить, что данное значение содержит альфа, тире и подчеркивание. Перейти к редактору

21. Напишите функцию JavaScript для вывода целого числа с запятыми в качестве разделителей тысяч. Перейти к редактору

Тестовые данные:
console.log (thousands_separators (1000));
«1000»
console.log (thousands_separators (10000.23));
«10,000.23»
console.log (thousands_separators (100000));
«100000»

Еще не все !

* Чтобы запустить код, наведите курсор мыши на панель результатов и нажмите кнопку «RERUN». *

Демонстрация в реальном времени:

Источник

Оцените статью