Задачи для решения

На позитивный и негативный просмотр

С помощью позитивного и негативного просмотра найдите все строки по шаблону 3 буквы a, затем буква b и поменяйте 3 буквы a на знак '!'. То есть из 'aaab' нужно сделать '!b'.

Решение:

'aaab'.replace(/aaa(?=b)/, '!');

С помощью позитивного и негативного просмотра найдите все строки по шаблону 3 буквы a, затем любая буква, но не b и поменяйте 3 буквы a на знак '!'. То есть из, к примеру, 'aaaw' нужно сделать '!w', а 'aaab' не поменяется.

Решение:

'aaaw aaab'.replace(/aaa(?!b)/, '!');

На replace

Дана строка с целыми числами. С помощью регулярки преобразуйте строку так, чтобы вместо этих чисел стояли их квадраты.

Решение:

var res = '10 6 3 2'.replace(/\d+/g, function (match) {
	return match * match;
});
alert(res);  

Дана строка с целыми числами. Найдите числа, стоящие в кавычках и увеличьте их в два раза. Пример: из строки 2aaa'3'bbb'4' сделаем строку 2aaa'6'bbb'8'.

Решение:

var match = 0;
var res = "2aaa'3'bbb'4'".replace(/\d+(?=')/g, function (match) {
	return match * 2;
});
alert(res);    

Дана строка в которой есть вставки {{текст}}. Найдите все такие вставки и поменяйте в них порядок букв на обратный (то есть из 'текст' нужно сделать 'тскет').

Решение:

var arr = "2aaa'3'{{текст}}'4'".replace(/(т)(е)(к)(с)(т)(?=}})/g, '$5$4$3$2$1');
alert(arr);      

Дана строка '23 + 35 ='. Числа могут быть любыми. Выведите на экран результат операции в виде '23 + 35 = 58'.

Решение:

var arr = '23 + 35 ='.replace(/(\d+)\s\+\s(\d+)\s=/g, function (match, match1, match2) {
	var res = parseInt(match1) + parseInt(match2);
	return match + res;
});
alert(arr);      

Головоломки

Определите, что год находится в интервале от 1900 до 2100 с помощью одного только регулярного выражения.

Решение:

alert(/^(19\d\d|20\d\d|2100)$/.test('2199'));     

С помощью test определите, что переданная строка является корректным временем вида '12:59', '23:41', '00:12', '00:00', '09:15'. Время '24.00', '25.00', '12.60', '12.93', '41.93' является некорректным.

Решение:

alert(/^([01]\d|2[0-3]):[0-5]\d$/.test('24:00'));       

С помощью test определите, что переданная строка является корректным временем вида '9.59 am', '12.30 pm'.

Решение:

alert(/^([01]\d|2[0-3]):[0-5]\d\s[ap]m$/.test('24:00'));      

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

Решение:

var res = "aaa zzqzqaq hsdds".replace(/\W*\w*(\w)\1\w*\W*/g, " ");       

Удалите одной регуляркой все повторяющиеся слова из строки, например для 'dsf xxx xxx sd' должно вернуть 'dsf xxx sd'.

Решение:

var res = "aaa zzqzqaq hsdds".replace(/\b(\w+)\s+\1/g, "$1");        

Решите предыдущую задачу с учетом того, что слово может повторяться много раз. Например 'dsf xxx xxx xxx xxx xxx sd' должно вернуть 'dsf xxx sd'.

Решение:

var res = "aaa zzqzqaq hsdds".replace(/\b(\w+)\b(?:\s+\1\b)+/g, "$1");