[Question]
  [
I've been working on this iOS app recently and I encountered a (rather easily solved) problem: How do I determine if my string is comprised only of emojis? 
Well, that's your job today!
### Input
A string. If the presence of unicode characters is problematic for you then you may use a different reasonable format. Please state what you do if you do something different from a regular string for taking input.
### Output
Print or return a truthy value if the input string contains only emojis, and a falsey value if it contains any characters other than emojis. 
### Wait a sec... what's an emoji? üòÖ
An emoji is a character that falls in these ranges:
```
0x1F600...0x1F64F  // Emoticons
0x1F300...0x1F5FF  // Misc Symbols and Pictographs
0x1F680...0x1F6FF  // Transport and Map
0x2600...0x26FF    // Misc symbols
0x2700...0x27BF    // Dingbats
0xFE00...0xFE0F    // Variation Selectors
```
(I think)
### This is üîπ[code-golf](/questions/tagged/code-golf "show questions tagged 'code-golf'")üîπ, so shortest code in bytes wins‚ùï
### Test cases
```
"Is it an emoji? ü§î" -> False
"üîπcode-golfüîπ" -> False
"üòÆ üò• üò® üò© üò™" -> False
"I have no fancy emojis :(" -> False
"üòé" -> True
"üòäüòò" -> True
```
For you poor souls who cannot see emojis, [here is an image of the test cases](https://i.stack.imgur.com/e1Ji5.png).
  
[Answer]
# [Emojicode](http://www.emojicode.org/), 179 bytes
```
üçáaüç®üêöüöÇ‚û°üöÇüîÇnüç°aüçáüçäüéâüéâ‚óÄn 9728üéä‚ñ∂n 10175‚óÄn 65024üéâüéâüéä‚ñ∂n 65039‚óÄn 127744üéä‚ñ∂n 128591‚óÄn 128640‚ñ∂n 128767üçáüçé0üçâüçâüçé1üçâ
```
A callable that takes a list of integers representing the codepoints and returns 1 or 0.
[Try it online!](https://tio.run/##bZFdToQwEMff9xQ9AkWgcAAPQlgSMRHMwgFWXjYQF9fY6AYTG5LNxhdf1cTbcILeAGfasrDGhw7z2fn/aHyTXSdRtowHKR7upNhuFgTskST5JZYGTIVg3qXYtVK0Zf/W4UcKXqaQ77C4gVNL0VR4@pd1SgJm@xDU/fNnSqhFmavSnmvZzth4qkP2IlB1ajPmONOg7bsBNRXfc6wxyzxm1jYWmMqchqIzaAKkus2StMgh5l9kDgHB7tuQFnFeLMMixK6DvpV3ivLxHikR0iw7avKJFZX@8etRGMw3c20Qb7XPD7ialyS6CldhVMQrVNLNleA7oMifc4x2NqPkV8rWYPavhKL/MT7d@aS5cL82mKhF61Dqnv7paKaOhfqvvw "Emojicode ‚Äì Try It Online")
# [Emojicode](http://www.emojicode.org/), 187 bytes
```
üçáaüî°‚û°üëåüîÇiüç°aüçáüç¶nüöÇiüçäüéâüéâ‚óÄn 9728üéä‚ñ∂n 10175‚óÄn 65024üéâüéâüéä‚ñ∂n 65039‚óÄn 127744üéä‚ñ∂n 128591‚óÄn 128640‚ñ∂n 128767üçáüçéüëéüçâüçâüçéüëçüçâ
```
A callable that takes a string and returns a boolean.
[Try it online!](https://tio.run/##S83Nz8pMzk9J/f9hfn/jh/m97VwKQHKZQmaxK0jqP0go8cP8KQsfzVv4Yf7EHiCzKRMouDARJANSmvdh/iywUNeH@X2dIPxoekOegqW5kQWQ0/Vo2rY8BUMDQ3NTsLCZqYGRCUwhXB4oamwJljc0Mjc3MUFoNLIwtTSEyliYmRjARM3NzKEO6AM6C4h7O6EYxO8Fsf8rQBzVuxbqGaDbl0A0oXgH5BuYZ0B@QfYKyCFo7C5C9sKs4VIAOmBGA4QLkpqyBBy4IMWTMRX0IRRwgZ0PAA "Emojicode ‚Äì Try It Online")
## Ungolfed and explained
```
üë¥ A callable that takes a üî° called input and returns a üëå
üçá input üî° ‚û° üëå
 üë¥ For each character in input
 üîÇ character üç° input üçá
  üë¥ Create a frozen called n containing the unicode codepoint of character
  üç¶ n üöÇ character
  üë¥ If the value is in one of specific ranges, return üëé (if the current character is not an emoji)
  üçäüéâüéâ‚óÄn 9728üéä‚ñ∂n 10175‚óÄn 65024üéâüéâüéä‚ñ∂n 65039‚óÄn 127744üéä‚ñ∂n 128591‚óÄn 128640‚ñ∂n 128767üçá
   üçé üëé
  üçâ
 üçâ
 üë¥ Since we're here, all characters are an emoji, so return üëç
 üçéüëç
üçâ
```
[Try it online!](https://tio.run/##ZVLNTgIxEL7zFHNTEw6AwMLRGE08@wS1DFDFlnS7mnhCLkYia4xEjQcJCeHmzfhAPAFvgDPt8hM8tNud7@s3880Ur82lkqaBy8X4@X4xHj7kgPYZqPiEIQq//MARSNHpiIsOgmsLB05cYQyCmKOJh7ABSncTB0I3wKJLrA74y1OORTPU8@dfkwCA1z41FlDINsi2sEI6tEQOfGaM@lsASU3WUlxqkDi2KBxSvqY1d6hXFdHBaCeUVrpFdSMk2lsF3rpGaQemuVH3auRc0@ezvxOnLGdNL3IjOglSe7hKo5El4i5K1VQSrNAtjPNZB/haCvsq3JOJtUgpt2zGoA23DJBbfRAKGCzG6SOv@XtPQz0q1ehnMH/71VAsFKOKD1crhVJ5RVzjFD2se7xYiqJyeXOxVKvUixlSq5YLq2hUjbJGcurUVxzKeMytd/J@rrREuMU9i9BGi3mgFm@s0KwJWBnJQ2y2WjD0Sqk/seQyczn8zt4YDXnKVfDroMfBb4PnzsMO4eGMJ7LdG3a2cx5kXE6Ucp5s@cThHNJ4fx@98MvQaBq80nr9T0g3hFD@Hw "Emojicode ‚Äì Try It Online")
[Answer]
# [Ruby](https://www.ruby-lang.org/), ~~61~~ 56+1 = ~~62~~ ~~57~~ 47 bytes
Uses the `-n` flag and takes input from STDIN. Prints `0` for truthy and `nil` for falsy.
-5 bytes because for some reason I initially thought the regex solution would not work???
-10 bytes from [NieDzejkob](https://codegolf.stackexchange.com/users/55934/niedzejkob) for noticing a code point overlap that I missed :o
```
p$_=~/^[üåÄ-üôèüöÄ-üõø‚òÄ-‚ûøÔ∏Ä-Ô∏ÄÔ∏è]*$/
```
[Try it online!](https://tio.run/##KypNqvz/v0Al3rZOPy76w/yeBt0P82f2f5g/C8SYvf/RjAbdR/P2v9/RoAvE73f0x2qp6P///2H@jC4gnvEvv6AkMz@v@L9uHgA "Ruby ‚Äì Try It Online")
[Answer]
# [JavaScript (V8)](https://v8.dev/), 39 bytes
Since [the proposal for Unicode property escapes](https://github.com/tc39/proposal-regexp-unicode-property-escapes) is now part of V8, this can also be addressed without manually specifying ranges. Granted, this comes years after the original question was asked, but I think it is an interesting addition none the less.
```
a=>/^\p{Emoji_Presentation}*$/u.test(a)
```
[Try it online!](https://tio.run/##PU4xbsJAEOz9ipEVCRvZ0EaxgCoFHT0h6OTckUPm1vItlhDKByhSUbijIVJCQZ9f8QPHhwnFjnZmdlazFKWwaaFzjsvHOiVjGQoD1GIw7L@@5NvnFS31fFJIKw0L1mQ@ug/9dY@l5UCEdeK1IW3yNdsmOfUAf2yhGcJAuvgIl8Nx70fOuRz2vym9yXhBmXLkX67OzVX15eDbwY@DU@uO8S5KCUNQwqSb9qvFU3APf963XTOV780ST1GB4NaO5Qqkbi1DOJUy2ctoETgvQicediKoKwvDpP4D "JavaScript (V8) ‚Äì Try It Online")
[Answer]
# Python, 87 bytes
```
lambda x:re.match('^[üòÄ-üôèüåÄ-üóøüöÄ-üõø‚òÄ-‚ûøÔ∏Ä-Ô∏ÄÔ∏è]*$',x)and 1
import re
```
[Try it online!](https://tio.run/##K6gsycjPM/6fZhvzPycxNyklUaHCqihVLzexJDlDQz0u@sP8GQ26H@bP7P8wvwfEmL7/w/xZIMbs/Y@AMo/m7X@/o0EXiN/v6I/VUlHXqdBMzEtRMOTKzC3ILypRKEr9n6hgqxDNpaCg5FmskFmikJinkJqbn5Vpr/Bh/pIpSjogmQ/zp@xMzk9J1U3Pz0kDcWDCM9YBVc1YCiJWgIiVIGIVRNZTISOxLFUhL18hLTEvuRJiarGClQZccx@c1QXEM5S4Yrm4uNLyixSyFTLzFBKtuDgLijLzSjTUq61sTAxqFapr1fWA0kDPa2TrKKRpZGtqav4HAA "Python 3 ‚Äì Try It Online")
Returns `1` as truthy value and `None` as falsy value.
[Answer]
# [Proton](https://github.com/alexander-liao/proton), 54 bytes
```
map(/[üåÄ-üôèüöÄ-üõø‚òÄ-‚ûøÔ∏Ä-Ô∏ÄÔ∏è]/.match)+all
```
[Try it online!](https://tio.run/##KyjKL8nP@59m@z83sUBDP/rD/J4G3Q/zZ/Z/mD8LxJi9/9GMBt1H8/a/39GgC8Tvd/TH6uvlJpYkZ2hqJ@bk/C8oyswr0UjTUP8wf8Y6IF4KxCuAeCUQr1LX1PwPAA "Proton ‚Äì Try It Online")
-9 bytes (3 chars) thanks to NieDzejkob
"Borrowing" Uriel's regex :P This is shorter thanks to Proton's obscure features and regex literals
[Answer]
# [QuadR](https://github.com/abrudz/QuadRS), 47 bytes
```
''‚â°‚çµ
[üåÄ-üôèüöÄ-üõø‚òÄ-‚ûøÔ∏Ä-Ô∏ÄÔ∏è]
```
[Try it online!](https://tio.run/##KyxNTCn6/19d/VHnwke9W7miP8zvadD9MH9m/4f5s0CM2fsfzWjQfTRv//sdDbpA/H5HfyzX//8f5s/oAuIZAA "QuadR ‚Äì Try It Online")
Is‚Ä¶
‚ÄÉ`''‚â°‚çµ`‚ÄÉan empty string identical to the result when‚Ä¶
‚ÄÉ`[üåÄ-üôèüöÄ-üõø‚òÄ-‚ûøÔ∏Ä-Ô∏ÄÔ∏è]`‚ÄÉall emojis are‚Ä¶
‚ÄÉ‚ÄÉreplaced with nothing
?
[Answer]
# JavaScript, ~~83~~ 61 bytes
-22 bytes thanks to [@Shaggy](https://codegolf.stackexchange.com/users/58974/shaggy)
`s=>(s.match(/\ud83d[\ude00-\ude4f]/g)||"").length==s.length/2`
**Demo**
```
f=s=>(s.match(/\ud83d[\ude00-\ude4f]/g)||"").length==s.length/2
document.writeln(f("üîπcode-golfüîπ")) //false
document.writeln(f("üòÆ üò• üò® üò© üò™")) //false
document.writeln(f("I have no fancy emojis :(")) //false
document.writeln(f("üòé")) //true
document.writeln(f("üòäüòò")) //true
```
]