I want to take a String value, and find out if there are any emojis in it. Might be some regex magic but not sure how to do that.
Asked
Active
Viewed 8,203 times
8
-
Use this regrex val regrex= RegExp REGEX_EMOJI = RegExp(r'(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])'); – harsh bangari May 11 '23 at 08:05
4 Answers
8
Was looking for the same thing.
Found this newly published package: https://pub.dartlang.org/packages/flutter_emoji
MIT license.
Looking at the source code it seems like this is the regex used:
/// A tweak regexp to pass all Emoji Unicode 11.0
/// TODO: improve this version, since it does not match the graphical bytes.
static final RegExp REGEX_EMOJI = RegExp(r'(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])');
I hope this information can be helpful.

ninnepinne
- 351
- 3
- 9
-
1It does not work because it will include some Chinese characters such as "。" (the "." in Chinese which is very common) – ch271828n Jan 25 '21 at 02:25
-
I'm not sure why but I had to change the variable name to camel case to get this to work: 'regexEmoji' instead of 'REGEX_EMOJI' . – Rivers Cuomo Feb 16 '21 at 13:30
-
I was able to skip the '。' character, as well as other Japanese characters, by omitting one part of the regex: '[\u2000-\u3300]'. So the full revised regex is: final RegExp regexEmoji = RegExp(r'(\u00a9|\u00ae|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])'); Here is a unicode Kanji table: http://www.rikai.com/library/kanjitables/kanji_codes.unicode.shtml – Rivers Cuomo Feb 16 '21 at 13:46
-
The revised regex from @RiversCuomo excludes some common emoji. For example, it does not include the 'heart' or 'pencil' emoji. – Nathan Dudley Jun 02 '22 at 03:18
5
Since @ninnepinne's answer does not work, because it will include some Chinese characters such as "。" (the "." in Chinese which is very common), I have to find another solution.
After some research, I find this answer about javascript quite helpful.
In dart, we can use the following:
var regex = RegExp(
r'(?:[\u00A9\u00AE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9-\u21AA\u231A-\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA-\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614-\u2615\u2618\u261D\u2620\u2622-\u2623\u2626\u262A\u262E-\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u2660\u2663\u2665-\u2666\u2668\u267B\u267F\u2692-\u2697\u2699\u269B-\u269C\u26A0-\u26A1\u26AA-\u26AB\u26B0-\u26B1\u26BD-\u26BE\u26C4-\u26C5\u26C8\u26CE-\u26CF\u26D1\u26D3-\u26D4\u26E9-\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733-\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763-\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934-\u2935\u2B05-\u2B07\u2B1B-\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|(?:\uD83C[\uDC04\uDCCF\uDD70-\uDD71\uDD7E-\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01-\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50-\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96-\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F-\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95-\uDD96\uDDA4-\uDDA5\uDDA8\uDDB1-\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB-\uDEEC\uDEF0\uDEF3-\uDEF6]|\uD83E[\uDD10-\uDD1E\uDD20-\uDD27\uDD30\uDD33-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4B\uDD50-\uDD5E\uDD80-\uDD91\uDDC0]))');

ch271828n
- 15,854
- 5
- 53
- 88
-
Thank you, this is the correct answer, this pattern is covering the emojis and not false-alarming spaces or characters like " ’ " – evanca Oct 19 '22 at 09:32
1
use this to avoid all types of special characters and emoji in input in a flutter-
inputFormatters: [WhitelistingTextInputFormatter(RegExp(r'[a-zA-Z0-9]'))],
-
inputFormatters: [FilteringTextInputFormatter.allow(RegExp(r'[a-zA-Z]'))], – shahana kareen Feb 25 '21 at 13:15
-
What about when text input is an email field? What characters should be allowed? – MDompekidis Jul 19 '21 at 14:01
1
I forked flutter_emoji
to dart_emoji
and it has a method for this:
// Check if text contains only emojis
EmojiUtil.hasTextOnlyEmoji(""); // returns true
EmojiUtil.hasTextOnlyEmoji(" Hello"); // returns false
flutter-emoji |
dart-emoji |
|
---|---|---|
Still maintained? | ❌ | ✅ |
Null Safety | ❌ | ✅ |
Pure Dart Package | ❌ | ✅ |
Updated emojis | ❌ | ✅ |

Nils Reichardt
- 3,195
- 2
- 18
- 28