свойство isUnicode
- @Since("2.4")
Использует ли это регулярное выражение режим Unicode.
В режиме Unicode Dart рассматривает пары суррогатов UTF-16 в исходной строке как одну кодовую точку и не сопоставляет каждый кодовый элемент пары отдельно. В противном случае Dart рассматривает целевую строку как последовательность отдельных кодовых элементов и не считает суррогаты специальными.
В режиме Unicode Dart ограничивает синтаксис шаблона RegExp, например запрещает некоторые неэкранированные варианты использования зарезервированных символов регулярных выражений, а также ненужные \-escape-последовательности («identity escapes»), использование которых исторически допускалось в режиме без Unicode. Кроме того, Dart поддерживает некоторые возможности шаблонов, например экранирование свойств Unicode, только в этом режиме.
var regExp = RegExp(r'^\p{L}$', unicode: true);
print(regExp.hasMatch('a')); // true
print(regExp.hasMatch('b')); // true
print(regExp.hasMatch('?')); // false
print(regExp.hasMatch(r'p{L}')); // false
// U+1F600 (😀), one code point, two code units.
var smiley = '\ud83d\ude00';
regExp = RegExp(r'^.$', unicode: true); // Matches one code point.
print(regExp.hasMatch(smiley)); // true
regExp = RegExp(r'^..$', unicode: true); // Matches two code points.
print(regExp.hasMatch(smiley)); // false
regExp = RegExp(r'^\p{L}$', unicode: false);
print(regExp.hasMatch('a')); // false
print(regExp.hasMatch('b')); // false
print(regExp.hasMatch('?')); // false
print(regExp.hasMatch(r'p{L}')); // true
regExp = RegExp(r'^.$', unicode: false); // Matches one code unit.
print(regExp.hasMatch(smiley)); // false
regExp = RegExp(r'^..$', unicode: false); // Matches two code units.
print(regExp.hasMatch(smiley)); // true Реализация
@Since("2.4")
bool get isUnicode;
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-core/RegExp/isUnicode.html