Функция escape
Функция escape класса RegExp принимает строку
и возвращает новую строку, в которой все специальные
символы регулярных выражений экранированы обратным слешем.
В первый параметр мы передаем исходную строку, которую
нужно экранировать. Это статический метод, поэтому
он вызывается напрямую через класс RegExp,
а не через экземпляр объекта.
Экранирование необходимо, когда вы хотите использовать
пользовательский ввод или произвольную строку как
часть шаблона регулярного выражения. Без экранирования
такие символы, как ., *, +, ?,
(, ), [, ], {, },
^, $, | и \, будут
интерпретироваться как управляющие конструкции,
а не как обычные символы.
Синтаксис
RegExp.escape(String text)
Пример
Давайте экранируем строку, содержащую специальные символы регулярного выражения:
void main()
{
String str = 'abc.def';
String escaped = RegExp.escape(str);
print(escaped);
}
Результат выполнения кода:
"abc\.def"
Пример
Давайте экранируем строку с несколькими специальными символами и проверим, что она работает как литерал в регулярном выражении:
void main()
{
String str = 'a+b*c?';
String escaped = RegExp.escape(str);
print(escaped);
RegExp regExp = RegExp(escaped);
print(regExp.hasMatch('a+b*c?'));
print(regExp.hasMatch('aabcc'));
}
Результат выполнения кода:
"a\+b\*c\?"
true
false
Пример
Давайте экранируем строку, содержащую символы скобок и вертикальную черту:
void main()
{
String str = '(a|b)';
String escaped = RegExp.escape(str);
print(escaped);
}
Результат выполнения кода:
"\(a\|b\)"
Смотрите также
-
класс
RegExp,
который представляет регулярное выражение -
метод
hasMatch,
который проверяет наличие совпадения -
метод
allMatches,
который возвращает все совпадения -
свойство
pattern,
которое возвращает исходный шаблон