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

На карманы при замене

Дана строка 'aaa@bbb eee7@kkk'. Напишите регулярку, которая найдет строки по шаблону: любое количество букв и цифр, символ @, любое количество букв и цифр и поменяет местами то, что стоит до @ на то, что стоит после нее. Например, aaa@bbb должно превратиться в bbb@aaa.

Решение:

'aaa@bbb eee7@kkk'.replace(/(\w+)@(\w+)/, '$2@$1');

Дана строка вида 'a1b2c3'. Напишите регулярку, которая найдет все цифры и удвоит их количество таким образом: 'a11b22c33' (то есть рядом с каждой цифрой напишет такую же).

Решение:

'a1b2c3'.replace(/(\d)/, '$1$1');

Задачи на test и match

Задачи ниже не всегда можно решить с помощью одной только регулярки. Может понадобится еще что-нибудь дописать на JavaScript (не всегда, но такое может быть).

С помощью метода test определите, что переданная строка является емэйлом. Примеры емэйлов для тестирования mymail@mail.ru, my.mail@mail.ru, my-mail@mail.ru, my_mail@mail.ru, mail@mail.com, mail@mail.by, mail@yandex.ru.

Решение:

/^[a-zA-z]+\W?[a-z]+@[a-zA-z]+\.[a-z]{2,3}$/.test('my_mail@mail.ru');

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

Решение:

'строка с емэйлами'.match(/([a-zA-z]+\W?[a-z]+@[a-zA-z]+\.[a-z]{2,3})/);

С помощью test определите, что переданная строка является доменом. Примеры доменов: site.ru, site.com, my-site.com.

Решение:

/^([a-z.-_]+\.[a-z]{2,3})$/.test('my-site.com');

С помощью test определите, что переданная строка является доменом. Примеры доменов: http://site.ru, http://site.com.

Решение:

/^http://[a-z.-_]+\.[a-z]{2,3}$/.test('http://site.ru');

С помощью test определите, что переданная строка является доменом вида http://site.ru. Протокол может быть как http, так и https.

Решение:

/^https?://[a-z.-_]+\.[a-z]{2,3}$/.test('http://site.ru');

С помощью test определите, что переданная строка начинается с http или с https.

Решение:

/^https?/.test('http://site.ru');

С помощью test определите, что переданная строка заканчивается расширением txt, html или php.

Решение:

/\.(php|txt|html)$/.test('index.php');

С помощью test определите, что переданная строка заканчивается расширением jpg или jpeg.

Решение:

/\.jpe?g$/.test('index.php');

С помощью test узнайте является ли строка числом, длиной до 12 цифр.

Решение:

/^\d{12}$/.test('1234567891312312323');

Дана строка с буквами, пробелами и цифрами. Найдите сумму всех чисел из данной строки.

Решение:

var arr = [];
var sum = 0;
var str="46 vf 45 ty";
arr = str.match(/\d/g);

for (var i = 0; i < arr.length; i++) {
	sum = sum + parseInt(arr[i]);
}

alert(sum);      

Задачи на replace

С помощью replace замените в строке домены вида http://site.ru, http://site.com на <a href="http://site.ru">site.ru</a>.

Решение:

var str = "http://site.ru aa aaa http://site.com";
alert(str.replace(/http:\/\/site\.[a-z]{2,3}/g,
"<a href=\"http:\/\/site\.ru\">site\.ru<\/a>"));
       

С помощью replace замените все повторяющиеся пробелы на один.

Решение:

var str = "12 aa aaa 56";
alert(str.replace(/\s{2}/g, " "));        

Найдите и удалите все комментарии CSS.

Решение:

var str="/*dfdf*/ sadsad";
alert(str.replace(/\/\*.*?\*\//g, ""));         

Найдите и удалите все комментарии HTML.

Решение:

var str="<!--dfdf--> sadsad <!--ghgh-->";
alert(str.replace(//g, ""));