Регулярное выражение (Regular Expression), также известное как RegEx или RegExp, - это последовательность символов, которая определяет шаблон поиска текста. Они используются для поиска и замены текста в строках, основанных на заданном шаблоне.
Регулярные выражения могут содержать специальные символы, которые представляют собой определенные типы символов, например, цифры, буквы, пробелы и т.д. Они также могут содержать специальные символы, которые определяют определенные шаблоны поиска, такие как начало строки (^), конец строки ($), любой символ (.), повторение ( * ) , альтернатива ( | ) и т.д.
Например, следующее регулярное выражение соответствует любой строке, которая содержит слово “hello”:
;/hello/
А следующее регулярное выражение соответствует любой строке, которая начинается с цифры и заканчивается буквой “a”:
;/^\d.*a$/
Регулярные выражения могут использоваться в JavaScript для поиска и замены текста в строках, валидации введенных данных пользователем на формах, а также для других задач, связанных с обработкой текстовых данных.
В JavaScript, регулярные выражения создаются с помощью конструктора RegExp
или с помощью литерала регулярного выражения (/.../
). Они могут быть использованы с методами строк, такими как match()
, replace()
, search()
и split()
, чтобы выполнить различные операции с текстом.
Palindrome
const regex = /\b(\w)(\w)?(\w)?\w?\3\2\1\b/g;
// \b - spaces around the words / numbers
// (\w) - first symbol
// (\w)? - find out how many symbols in word/number
// \b(\w)(\w)?(\w)?\w?\3\2\1\b checking for palyndrome
// 1 2 3 4 5 6 7
// 7th symbol must match 1 sub expression, 6 = 2, 5 = 3 and 4th symbol in the middle.
// So \3 checks if the 5th symbol equal 3rd subexpression, /2 - if the 6th symbol match 2nd subexpression, /1 - if the 7th symbol math 1st subexpression.
// for example str ' A B C D C B A '
// regex \b(\w)(\w)(\w)(\w)\3\2\1\\b
// sub expression № 1 2 3 4
describe("Tests", () => {
it("test", () => {
Test.assertSimilar("aa bbb cccc ddddd eeeeee fffffff".match(regex), [ 'aa', 'bbb', 'cccc', 'ddddd', 'eeeeee', 'fffffff' ]);
Test.assertSimilar("aaa bcccd".match(regex), [ 'aaa' ]);
Test.assertSimilar("_x_x_ --- ~~|~~".match(regex), [ '_x_x_' ]);
Test.assertSimilar("ABCDCBA ABABABA".match(regex), [ 'ABCDCBA', 'ABABABA' ]);
Test.assertSimilar("121 1221 13577531 11211".match(regex) , [ '121', '1221', '11211' ]);
Test.assertSimilar("aabbbcccc d".match(regex), null);
Test.assertSimilar("abbA CdDc".match(regex), null);
Test.assertSimilar("1 1".match(regex), null );
Test.assertSimilar("1231 12341 123451 1234561".match(regex), null );
});
});