Каретка (^) - это один из многих символов для создания шаблонов в регулярных выражениях.
Каретка соответствует началу строки или определенной строке. Но это еще не все, что связано с символом каретки (^).
Символ каретки (^) часто называют ”якорем”, поскольку он привязывает шаблон к началу строки или линии. Таким образом, его можно назвать “якорем начала строки”.
Другой якорь — это знак доллара ($), который привязывает шаблон к концу строки, что означает ”якорь конца строки”.
Оглавление
Что делает символ каретки в RegEx?
Есть две основные вещи, которые делает символ каретки - он соответствует началу строки или началу строки, и он отрицает набор символов, когда вы помещаете его внутрь квадратных скобок.
Кроме того, вы можете захотеть сопоставить сам символ каретки, поскольку он используется и для других целей, помимо регулярных выражений. В этом случае его нужно экранировать.
Как сопоставить начало строки с символом каретки
Чтобы сопоставить начало строки с символом каретки, добавьте его к вашему шаблону.
В примере ниже я использовал шаблон /^hello\s*world/igm, который будет соответствовать только тексту hello world, находящемуся в начале строки. Любой другой текст hello world между строками или в конце строки не будет соответствовать:
Кроме того, шаблон /^c/igm будет соответствовать словам, начинающимся с буквы c, только если они находятся в начале строки:
Как отрицать набор символов с помощью каретки
Еще одна вещь, которую можно сделать с помощью каретки, — это отрицание набора символов. Например, если вы хотите отрицать гласные, вы можете поместить их в набор символов и добавить к ним карету:
Видно, что все гласные не совпали.
Как сопоставить каретку как символ в строке
Каретку можно использовать и для других целей, например, для экспоненциации в математике или побитового оператора XOR в C++.
Если вы хотите сопоставить его, вы должны экранировать его обратной косой чертой , так как он распознается как метасимвол движками RegEx:
Метасимвол каретки отлично работает в JavaScript. В приведенном ниже фрагменте кода показано, как я тестирую его с некоторыми строками:
const text1 = `There's hello world in every programming language
Hello world is what starts many programming language courses.
Many programmers don't know any other hello apart from hello world.`;
const text2 = `caret is anchors your pattern to the start of a line
To match the caret itself, you have to escape it.`;
const text3 = '4 raised to power 2 in mathematics is 4 ^ 2';
const re1 = /^hello\s*world/gim;
const re2 = /^c/gim;
const re3 = /\^/;
console.log(re1.test(text1)); //true
console.log(re2.test(text2)); //true
console.log(re3.test(text3)); //true
Заключение
В этой статье вы узнали, как можно использовать ”якорь начала строки” (метасимвол каретки ^) для привязки шаблона к началу строки или строки как в механизмах RegEx, так и в JavaScript.
Чтобы узнать о якоре конца строки ($), вы можете прочитать эту статью.
Счастливого кодирования!