title: Detecting *all* emojis
body: <p>Right now I'm using this piece of code : </p>
  
  <pre><code>public static bool ContainsEmoji(this string text)
  {
      Regex rgx = new Regex(@"\p{Cs}");
      return rgx.IsMatch(text);
  }
  </code></pre>
  
  <p>And it's being somewhat helpful.</p>
  
  <p>Most of them appear to be detected, but some aren't.</p>
  
  <p>Here's a reference list to help : <a href="http://unicode.org/emoji/charts/full-emoji-list.html" rel="noreferrer">http://unicode.org/emoji/charts/full-emoji-list.html</a></p>
  
  <p>All the smiley faces appear to be fine, but these specific emojis do not get caught by the Regex :</p>
  
  <p>1920    U+2614  ☔   umbrella with rain drops</p>
  
  <p>1921    U+26F1  ⛱   umbrella on ground</p>
  
  <p>1922    U+26A1  ⚡   high voltage</p>
  
  <p>1923    U+2744  ❄   snowflake</p>
  
  <p>On the keyboard these are not close to each other, but in the list they are following each other, so I just assumed that there was a point where it would start not working in the emoji list, and it's not really verifying. From 1905 (weather-like emojis), going down, some are caught in the regex, some aren't. There does not seem to be any rule.</p>
  
  <p>I can't afford to just go full ASCII because I need people to enter characters such as cyrillic, but I can't accept emojis specifically. I have no clue how to go forward from here.</p>
  
  <p>I read the <a href="https://msdn.microsoft.com/en-us/library/xcwwfbb8(v=vs.110).aspx" rel="noreferrer">MSDN docs about surrogates high/low pairs</a>, but at this stage this is very confusing to me, and I think some push in the right direction would go a long way.</p>
  
  <p>Thank you very much for your time :)</p>