diff --git a/src/mfm/parse/elements/emoji.ts b/src/mfm/parse/elements/emoji.ts index cd9a3d032c..e510b5d912 100644 --- a/src/mfm/parse/elements/emoji.ts +++ b/src/mfm/parse/elements/emoji.ts @@ -9,7 +9,7 @@ export type TextElementEmoji = { }; export default function(text: string) { - const match = text.match(/^:([a-zA-Z0-9+-_]+):/); + const match = text.match(/^:([a-zA-Z0-9+-_]+?):/); if (!match) return null; const emoji = match[0]; return { diff --git a/test/mfm.ts b/test/mfm.ts index f5e5223f29..1aadcd21e8 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -180,10 +180,17 @@ describe('Text', () => { }); it('emoji', () => { - const tokens = analyze(':cat:'); + const tokens1 = analyze(':cat:'); assert.deepEqual([ { type: 'emoji', content: ':cat:', emoji: 'cat'} - ], tokens); + ], tokens1); + + const tokens2 = analyze(':cat::cat::cat:'); + assert.deepEqual([ + { type: 'emoji', content: ':cat:', emoji: 'cat'}, + { type: 'emoji', content: ':cat:', emoji: 'cat'}, + { type: 'emoji', content: ':cat:', emoji: 'cat'} + ], tokens2); }); it('block code', () => {