00001 00002 var rsAstralRange = '\\ud800-\\udfff', 00003 rsComboMarksRange = '\\u0300-\\u036f', 00004 reComboHalfMarksRange = '\\ufe20-\\ufe2f', 00005 rsComboSymbolsRange = '\\u20d0-\\u20ff', 00006 rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, 00007 rsDingbatRange = '\\u2700-\\u27bf', 00008 rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', 00009 rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', 00010 rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', 00011 rsPunctuationRange = '\\u2000-\\u206f', 00012 rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', 00013 rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', 00014 rsVarRange = '\\ufe0e\\ufe0f', 00015 rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; 00016 00018 var rsApos = "['\u2019]", 00019 rsBreak = '[' + rsBreakRange + ']', 00020 rsCombo = '[' + rsComboRange + ']', 00021 rsDigits = '\\d+', 00022 rsDingbat = '[' + rsDingbatRange + ']', 00023 rsLower = '[' + rsLowerRange + ']', 00024 rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', 00025 rsFitz = '\\ud83c[\\udffb-\\udfff]', 00026 rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', 00027 rsNonAstral = '[^' + rsAstralRange + ']', 00028 rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', 00029 rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', 00030 rsUpper = '[' + rsUpperRange + ']', 00031 rsZWJ = '\\u200d'; 00032 00034 var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', 00035 rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', 00036 rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', 00037 rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', 00038 reOptMod = rsModifier + '?', 00039 rsOptVar = '[' + rsVarRange + ']?', 00040 rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', 00041 rsOrdLower = '\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)', 00042 rsOrdUpper = '\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)', 00043 rsSeq = rsOptVar + reOptMod + rsOptJoin, 00044 rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq; 00045 00047 var reUnicodeWord = RegExp([ 00048 rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', 00049 rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', 00050 rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, 00051 rsUpper + '+' + rsOptContrUpper, 00052 rsOrdUpper, 00053 rsOrdLower, 00054 rsDigits, 00055 rsEmoji 00056 ].join('|'), 'g'); 00057 00065 function unicodeWords(string) { 00066 return string.match(reUnicodeWord) || []; 00067 } 00068 00069 module.exports = unicodeWords;