Синтаксис регулярных выражений

Метасимволы

Mетасимволы - символы, которые имеют определенный смысл:

Здесь надо заметить, что метасимвол \w применяется только для букв латинского алфавита, кириллические символы для него не подходят.

Так, стандартный формат номера телефона +1-234-567-8901 соответствует регулярному выражению \d-\d\d\d-\d\d\d-\d\d\d\d. Например, заменим числа номера нулями:

	var phoneNumber = "+1-234-567-8901";
	var myExp = /\d-\d\d\d-\d\d\d-\d\d\d\d/;
	phoneNumber = phoneNumber.replace(myExp, "00000000000");
	document.write(phoneNumber);
	

Модификаторы

Кроме выше рассмотренных элементов регулярных выражений есть еще одна группа комбинаций, которая указывает, как символы в строке будут повторяться. Такие комбинации называют модификаторами:

Например, возьмем номер тот же телефона. Ему соответствует регулярное выражение \d-\d\d\d-\d\d\d-\d\d\d\d. Однако с помощью выше рассмотренных комбинаций мы его можем упростить: \d-\d{3}-\d{3}-\d{4}

Также надо отметить, что так как символы ?, +, * имеют особый смысл в регулярных выражениях, то чтобы их использовать в обычным для них значении (например, нам надо заменить знак плюс в строке на минус), то данные символы надо экранировать с помощью слеша:

	var phoneNumber = "+1-234-567-8901";
	var myExp = /\+\d-\d{3}-\d{3}-\d{4}/;
	phoneNumber = phoneNumber.replace(myExp, "80000000000");
	document.write(phoneNumber);
	
Kомбинация '\b', указывает на соответствие в пределах слова. И в этом случае мы можем проводить замену, если регуляное выражение соответствует всему слову:
	var initialText = "Языки обучения: Java, JavaScript, C++";
	var exp = /Java\b/g;
	var result = initialText.replace(exp, "C#");
	document.write(result); // Языки обучения: C#, JavaScript, C++
	
Но при использовании '\b' надо учитывать, что в JavaScript отсутствует полноценная поддержка юникода, поэтому применять '\b' мы сможем только к англоязычным словам.

Использование групп в регулярных выражениях Для поиска в строке более сложных соответствий применяются группы. В регулярных выражениях группы заключаются в скобки. Например, у нас есть следующий код html, который содержит тег изображения: ''. И допустим, нам надо вычленить из этого кода пути к изображениям:
    var initialText = '<.img src= "picture.png" />;<.img src= "image.png" />'; 
    document.write("<.h3> Первое включение<./h3>")
    var exp = /[a-z]+\.(png|jpg)/i; // поиск независимо от регистра.
    var result = initialText.match(exp); 
    result.forEach(function(value, index, array){
    
    document.write(value + "<.br/>");
    })
    document.write("<.h3>Глобальный поиск<./h3>")
    var exp = /[a-z]+\.(png|jpg)/ig; // поиск всех включений независимо от регистра.
    var result = initialText.match(exp); 
    result.forEach(function(value, index, array){
    
    document.write(value + "<.br/>");
    })
	
Вывод браузера:
	
	Output
	
	
Первая часть до скобок ([a-z]+\.) указывает на наличие в строке от 1 и более символов из диапазона a-z, после которых идет точка. Так как точка является специальным символом в регулярных выражениях, то она экранируется слешем. А дальше идет группа: (png|jpg). Эта группа указывает, что после точки может использоваться как "png", так и "jpg".