isUnicode 属性
- @Since("2.4")
此正则表达式是否使用 Unicode 模式。
在 Unicode 模式下,Dart 将原始字符串中的 UTF-16 代理对视为单个码点,并不会分别匹配每一对中的每个码元。否则,Dart 将目标字符串视为一系列单独的码元,并不将代理视为特殊。
在 Unicode 模式下,Dart 限制 RegExp 模式语法,例如不允许某些未转义的受限正则表达式字符的使用,也不允许不必要的 \
-转义("身份转义"),这在非 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;