emoji-regex ![Build status](https://travis-ci.org/mathiasbynens/emoji-regex.svg?branch=main)
emoji-regex offers a regular expression to match all emoji symbols and sequences (including textual representations of emoji) as per the Unicode Standard.
This repository contains a script that generates this regular expression based on Unicode data. Because of this, the regular expression can easily be updated whenever new emoji are added to the Unicode standard.
Installation
Via npm:
npm install emoji-regex
In Node.js:
const emojiRegex = require('emoji-regex/RGI_Emoji.js');
const text = `
\u{231A}: ⌚ default emoji presentation character (Emoji_Presentation)
\u{2194}\u{FE0F}: ↔️ default text presentation character rendered as emoji
\u{1F469}: 👩 emoji modifier base (Emoji_Modifier_Base)
\u{1F469}\u{1F3FF}: 👩🏿 emoji modifier base followed by a modifier
`;
const regex = emojiRegex();
let match;
while (match = regex.exec(text)) {
const emoji = match[0];
console.log(`Matched sequence ${ emoji } — code points: ${ [...emoji].length }`);
}
Console output:
Matched sequence ⌚ — code points: 1
Matched sequence ⌚ — code points: 1
Matched sequence ↔️ — code points: 2
Matched sequence ↔️ — code points: 2
Matched sequence 👩 — code points: 1
Matched sequence 👩 — code points: 1
Matched sequence 👩🏿 — code points: 2
Matched sequence 👩🏿 — code points: 2
Regular expression flavors
The package comes with three distinct regular expressions:
const emojiRegexRGI = require('emoji-regex/RGI_Emoji.js');
const emojiRegex = require('emoji-regex/index.js');
const emojiRegexText = require('emoji-regex/text.js');
Additionally, in environments which support ES2015 Unicode escapes, you may require
ES2015-style versions of the regexes:
const emojiRegexRGI = require('emoji-regex/es2015/RGI_Emoji.js');
const emojiRegex = require('emoji-regex/es2015/index.js');
const emojiRegexText = require('emoji-regex/es2015/text.js');
For maintainers
How to update emoji-regex after new Unicode Standard releases
-
Update the Unicode data dependency in package.json
by running the following commands:
npm uninstall @unicode/unicode-12.0.0
npm install @unicode/unicode-13.0.0 --save-dev
-
Generate the new output:
npm run build
-
Verify that tests still pass:
npm test
-
Send a pull request with the changes, and get it reviewed & merged.
-
On the main
branch, bump the emoji-regex version number in package.json
:
npm version patch -m 'Release v%s'
Instead of patch
, use minor
or major
as needed.
Note that this produces a Git commit + tag.
-
Push the release commit and tag:
git push
Our CI then automatically publishes the new release to npm.
Author
License
emoji-regex is available under the MIT license.