Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
2.2k views
Welcome To Ask or Share your Answers For Others

1 Answer

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...