Matching Unicode letters with RegExp

dart

Solution

I know this is an old question. But `RegExp` now supports unicode categories (since Dart 2.4) so you can do something like this:

RegExp alpha = RegExp(r'\p{Letter}', unicode: true);
print(alpha.hasMatch("f")); // true
print(alpha.hasMatch("ת")); // true
print(alpha.hasMatch("®")); // false

Problem

I am in need of matching Unicode letters, similarly to PCRE's `\p{L}`. Now, since Dart's RegExp class is based on ECMAScript's, it doesn't have the concept of `\p{L}`, sadly. I'm looking into perhaps constructing a big character class that matches all Unicode letters, but I'm not sure where to start. So, I want to match letters like: ``` foobar מכון ראות ``` But the R symbol shouldn't be matched: ``` BlackBerry® ``` Neither should any ASCII control characters or punctuation marks, etc. Essentially every letter in every language Unicode supports, whether it's å, ä, φ or ת, they should match if they are actual letters.

Original source