【发布时间】:2021-11-22 19:10:20
【问题描述】:
我有这个正则表达式:
RegExp(r'[\u{1f300}-\u{1f5ff}\u{1f900}-\u{1f9ff}\u{1f600}-\u{1f64f}\u{1f680}-\u{1f6ff}\u{2600}-\u{26ff}\u{2700}-\u{27bf}\u{1f1e6}-\u{1f1ff}\u{1f191}-\u{1f251}\u{1f004}\u{1f0cf}\u{1f170}-\u{1f171}\u{1f17e}-\u{1f17f}\u{1f18e}\u{3030}\u{2b50}\u{2b55}\u{2934}-\u{2935}\u{2b05}-\u{2b07}\u{2b1b}-\u{2b1c}\u{3297}\u{3299}\u{303d}\u{00a9}\u{00ae}\u{2122}\u{23f3}\u{24c2}\u{23e9}-\u{23ef}\u{25b6}\u{23f8}-\u{23fa}\u{200d}]');
当我在https://regex101.com 上使用这个正则表达式时,它正在工作。但是当我在 Dart 中使用这个 RegExp 时,我得到了一个 Range out of order in character class 错误(请注意,当我在 JavaScript 中使用 RegExp 等效项时也会发生同样的情况)。
我很确定这是一个字符串转义错误,但我找不到问题。
我已经在 Dart (r'...') 中尝试了一个原始字符串,转义了 \u{1f300} 中的 \ → \\u{1f300},但是,两者都不起作用。
【问题讨论】:
-
你是否传递了
u标志(在 Dart 中为unicode: true)?
标签: javascript regex dart unicode