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