如果表情符号是国旗,则使用正则表达式进行检测
Detect with regex if emoji is country flag
我一直在尝试制作一个可以检测表情符号是否为国旗的正则表达式。我希望正则表达式匹配所有国家的国旗(从阿森松岛到津巴布韦)。
我的方法是将所有国旗一一放入正则表达式中。我希望有人能告诉我更好的方法。
国旗表情符号对应于一对标识国家/地区的本地符号(两个字母)(例如,FR 代表法国 - see list)。
您可以做的是使用匹配这些字母的任意组合的正则表达式。当然,这将包括不存在的国家代码(例如 ZZ),但这应该不包括任何其他表情符号。
这里是:
var reg = /[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/;
reg.test(""); // false
reg.test(""); // true
由于标志基本上是由两个 Unicode 字符创建的,因此可能的选项是 str.match(/[-]{2}/u)
,假设 str
包含该字符串。范围表达式中的两个值是 U+1F1E6(区域指示符号字母 A)和 U+1F1FF(区域指示符号字母 Z),均自 Unicode 6.0 起可用。
这个解决方案的主要缺点是它匹配那些指标符号的所有可能组合,因此不能保证指标代表有效的国家,例如。将与 .
匹配
为了保持正则表达式的精确性,您只能构建正则表达式范围。
var country_emoji_ranges = ['\u{1F1E6}[\u{1F1E9}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]',
'\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]',
'\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F4}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]',
'\u{1F1E9}[\u{1F1EA}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]',
'\u{1F1EA}[\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1F9}]',
'\u{1F1EB}[\u{1F1EE}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]',
'\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]',
'\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]',
'\u{1F1EE}[\u{1F1E9}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]',
'\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]',
'\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]',
'\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F8}-\u{1F1FB}\u{1F1FE}]',
'\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]',
'\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]',
'\u{1F1F4}\u{1F1F2}',
'\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]',
'\u{1F1F6}\u{1F1E6}',
'\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]',
'\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]',
'\u{1F1F9}[\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]',
'\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F8}\u{1F1FE}\u{1F1FF}]',
'\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]',
'\u{1F1FC}[\u{1F1EB}\u{1F1F8}]',
'\u{1F1FE}[\u{1F1EA}\u{1F1F9}]',
'\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]'
];
var country_emoji_rx = new RegExp(country_emoji_ranges.join('|'), 'ug');
var text = "\u{1F1E6}\u{1F1E9}, \u{1F1E6}\u{1F1EA}, \u{1F1E6}\u{1F1EB}, \u{1F1E6}\u{1F1EC}, \u{1F1E6}\u{1F1EE}, \u{1F1E6}\u{1F1F1}, \u{1F1E6}\u{1F1F2}, \u{1F1E6}\u{1F1F4}, \u{1F1E6}\u{1F1F6}, \u{1F1E6}\u{1F1F7}, \u{1F1E6}\u{1F1F8}, \u{1F1E6}\u{1F1F9}, \u{1F1E6}\u{1F1FA}, \u{1F1E6}\u{1F1FC}, \u{1F1E6}\u{1F1FD}, \u{1F1E6}\u{1F1FF}, \u{1F1E7}\u{1F1E6}, \u{1F1E7}\u{1F1E7}, \u{1F1E7}\u{1F1E9}, \u{1F1E7}\u{1F1EA}, \u{1F1E7}\u{1F1EB}, \u{1F1E7}\u{1F1EC}, \u{1F1E7}\u{1F1ED}, \u{1F1E7}\u{1F1EE}, \u{1F1E7}\u{1F1EF}, \u{1F1E7}\u{1F1F1}, \u{1F1E7}\u{1F1F2}, \u{1F1E7}\u{1F1F3}, \u{1F1E7}\u{1F1F4}, \u{1F1E7}\u{1F1F6}, \u{1F1E7}\u{1F1F7}, \u{1F1E7}\u{1F1F8}, \u{1F1E7}\u{1F1F9}, \u{1F1E7}\u{1F1FB}, \u{1F1E7}\u{1F1FC}, \u{1F1E7}\u{1F1FE}, \u{1F1E7}\u{1F1FF}, \u{1F1E8}\u{1F1E6}, \u{1F1E8}\u{1F1E8}, \u{1F1E8}\u{1F1E9}, \u{1F1E8}\u{1F1EB}, \u{1F1E8}\u{1F1EC}, \u{1F1E8}\u{1F1ED}, \u{1F1E8}\u{1F1EE}, \u{1F1E8}\u{1F1F0}, \u{1F1E8}\u{1F1F1}, \u{1F1E8}\u{1F1F2}, \u{1F1E8}\u{1F1F3}, \u{1F1E8}\u{1F1F4}, \u{1F1E8}\u{1F1F7}, \u{1F1E8}\u{1F1FA}, \u{1F1E8}\u{1F1FB}, \u{1F1E8}\u{1F1FC}, \u{1F1E8}\u{1F1FD}, \u{1F1E8}\u{1F1FE}, \u{1F1E8}\u{1F1FF}, \u{1F1E9}\u{1F1EA}, \u{1F1E9}\u{1F1EF}, \u{1F1E9}\u{1F1F0}, \u{1F1E9}\u{1F1F2}, \u{1F1E9}\u{1F1F4}, \u{1F1E9}\u{1F1FF}, \u{1F1EA}\u{1F1E8}, \u{1F1EA}\u{1F1EA}, \u{1F1EA}\u{1F1EC}, \u{1F1EA}\u{1F1ED}, \u{1F1EA}\u{1F1F7}, \u{1F1EA}\u{1F1F8}, \u{1F1EA}\u{1F1F9}, \u{1F1EB}\u{1F1EE}, \u{1F1EB}\u{1F1EF}, \u{1F1EB}\u{1F1F0}, \u{1F1EB}\u{1F1F2}, \u{1F1EB}\u{1F1F4}, \u{1F1EB}\u{1F1F7}, \u{1F1EC}\u{1F1E6}, \u{1F1EC}\u{1F1E7}, \u{1F1EC}\u{1F1E9}, \u{1F1EC}\u{1F1EA}, \u{1F1EC}\u{1F1EB}, \u{1F1EC}\u{1F1EC}, \u{1F1EC}\u{1F1ED}, \u{1F1EC}\u{1F1EE}, \u{1F1EC}\u{1F1F1}, \u{1F1EC}\u{1F1F2}, \u{1F1EC}\u{1F1F3}, \u{1F1EC}\u{1F1F5}, \u{1F1EC}\u{1F1F6}, \u{1F1EC}\u{1F1F7}, \u{1F1EC}\u{1F1F8}, \u{1F1EC}\u{1F1F9}, \u{1F1EC}\u{1F1FA}, \u{1F1EC}\u{1F1FC}, \u{1F1EC}\u{1F1FE}, \u{1F1ED}\u{1F1F0}, \u{1F1ED}\u{1F1F2}, \u{1F1ED}\u{1F1F3}, \u{1F1ED}\u{1F1F7}, \u{1F1ED}\u{1F1F9}, \u{1F1ED}\u{1F1FA}, \u{1F1EE}\u{1F1E9}, \u{1F1EE}\u{1F1EA}, \u{1F1EE}\u{1F1F1}, \u{1F1EE}\u{1F1F2}, \u{1F1EE}\u{1F1F3}, \u{1F1EE}\u{1F1F4}, \u{1F1EE}\u{1F1F6}, \u{1F1EE}\u{1F1F7}, \u{1F1EE}\u{1F1F8}, \u{1F1EE}\u{1F1F9}, \u{1F1EF}\u{1F1EA}, \u{1F1EF}\u{1F1F2}, \u{1F1EF}\u{1F1F4}, \u{1F1EF}\u{1F1F5}, \u{1F1F0}\u{1F1EA}, \u{1F1F0}\u{1F1EC}, \u{1F1F0}\u{1F1ED}, \u{1F1F0}\u{1F1EE}, \u{1F1F0}\u{1F1F2}, \u{1F1F0}\u{1F1F3}, \u{1F1F0}\u{1F1F5}, \u{1F1F0}\u{1F1F7}, \u{1F1F0}\u{1F1FC}, \u{1F1F0}\u{1F1FE}, \u{1F1F0}\u{1F1FF}, \u{1F1F1}\u{1F1E6}, \u{1F1F1}\u{1F1E7}, \u{1F1F1}\u{1F1E8}, \u{1F1F1}\u{1F1EE}, \u{1F1F1}\u{1F1F0}, \u{1F1F1}\u{1F1F7}, \u{1F1F1}\u{1F1F8}, \u{1F1F1}\u{1F1F9}, \u{1F1F1}\u{1F1FA}, \u{1F1F1}\u{1F1FB}, \u{1F1F1}\u{1F1FE}, \u{1F1F2}\u{1F1E6}, \u{1F1F2}\u{1F1E8}, \u{1F1F2}\u{1F1E9}, \u{1F1F2}\u{1F1EA}, \u{1F1F2}\u{1F1EB}, \u{1F1F2}\u{1F1EC}, \u{1F1F2}\u{1F1ED}, \u{1F1F2}\u{1F1F0}, \u{1F1F2}\u{1F1F1}, \u{1F1F2}\u{1F1F2}, \u{1F1F2}\u{1F1F3}, \u{1F1F2}\u{1F1F4}, \u{1F1F2}\u{1F1F5}, \u{1F1F2}\u{1F1F6}, \u{1F1F2}\u{1F1F7}, \u{1F1F2}\u{1F1F8}, \u{1F1F2}\u{1F1F9}, \u{1F1F2}\u{1F1FA}, \u{1F1F2}\u{1F1FB}, \u{1F1F2}\u{1F1FC}, \u{1F1F2}\u{1F1FD}, \u{1F1F2}\u{1F1FE}, \u{1F1F2}\u{1F1FF}, \u{1F1F3}\u{1F1E6}, \u{1F1F3}\u{1F1E8}, \u{1F1F3}\u{1F1EA}, \u{1F1F3}\u{1F1EB}, \u{1F1F3}\u{1F1EC}, \u{1F1F3}\u{1F1EE}, \u{1F1F3}\u{1F1F1}, \u{1F1F3}\u{1F1F4}, \u{1F1F3}\u{1F1F5}, \u{1F1F3}\u{1F1F7}, \u{1F1F3}\u{1F1FA}, \u{1F1F3}\u{1F1FF}, \u{1F1F4}\u{1F1F2}, \u{1F1F5}\u{1F1E6}, \u{1F1F5}\u{1F1EA}, \u{1F1F5}\u{1F1EB}, \u{1F1F5}\u{1F1EC}, \u{1F1F5}\u{1F1ED}, \u{1F1F5}\u{1F1F0}, \u{1F1F5}\u{1F1F1}, \u{1F1F5}\u{1F1F2}, \u{1F1F5}\u{1F1F3}, \u{1F1F5}\u{1F1F7}, \u{1F1F5}\u{1F1F8}, \u{1F1F5}\u{1F1F9}, \u{1F1F5}\u{1F1FC}, \u{1F1F5}\u{1F1FE}, \u{1F1F6}\u{1F1E6}, \u{1F1F7}\u{1F1EA}, \u{1F1F7}\u{1F1F4}, \u{1F1F7}\u{1F1F8}, \u{1F1F7}\u{1F1FA}, \u{1F1F7}\u{1F1FC}, \u{1F1F8}\u{1F1E6}, \u{1F1F8}\u{1F1E7}, \u{1F1F8}\u{1F1E8}, \u{1F1F8}\u{1F1E9}, \u{1F1F8}\u{1F1EA}, \u{1F1F8}\u{1F1EC}, \u{1F1F8}\u{1F1ED}, \u{1F1F8}\u{1F1EE}, \u{1F1F8}\u{1F1EF}, \u{1F1F8}\u{1F1F0}, \u{1F1F8}\u{1F1F1}, \u{1F1F8}\u{1F1F2}, \u{1F1F8}\u{1F1F3}, \u{1F1F8}\u{1F1F4}, \u{1F1F8}\u{1F1F7}, \u{1F1F8}\u{1F1F8}, \u{1F1F8}\u{1F1F9}, \u{1F1F8}\u{1F1FB}, \u{1F1F8}\u{1F1FD}, \u{1F1F8}\u{1F1FE}, \u{1F1F8}\u{1F1FF}, \u{1F1F9}\u{1F1E8}, \u{1F1F9}\u{1F1E9}, \u{1F1F9}\u{1F1EB}, \u{1F1F9}\u{1F1EC}, \u{1F1F9}\u{1F1ED}, \u{1F1F9}\u{1F1EF}, \u{1F1F9}\u{1F1F0}, \u{1F1F9}\u{1F1F1}, \u{1F1F9}\u{1F1F2}, \u{1F1F9}\u{1F1F3}, \u{1F1F9}\u{1F1F4}, \u{1F1F9}\u{1F1F7}, \u{1F1F9}\u{1F1F9}, \u{1F1F9}\u{1F1FB}, \u{1F1F9}\u{1F1FC}, \u{1F1F9}\u{1F1FF}, \u{1F1FA}\u{1F1E6}, \u{1F1FA}\u{1F1EC}, \u{1F1FA}\u{1F1F2}, \u{1F1FA}\u{1F1F8}, \u{1F1FA}\u{1F1FE}, \u{1F1FA}\u{1F1FF}, \u{1F1FB}\u{1F1E6}, \u{1F1FB}\u{1F1E8}, \u{1F1FB}\u{1F1EA}, \u{1F1FB}\u{1F1EC}, \u{1F1FB}\u{1F1EE}, \u{1F1FB}\u{1F1F3}, \u{1F1FB}\u{1F1FA}, \u{1F1FC}\u{1F1EB}, \u{1F1FC}\u{1F1F8}, \u{1F1FE}\u{1F1EA}, \u{1F1FE}\u{1F1F9}, \u{1F1FF}\u{1F1E6}, \u{1F1FF}\u{1F1F2}, \u{1F1FF}\u{1F1FC}";
console.log(text.match(country_emoji_rx).length);
如果您想在不支持 u
标志的 JS 环境中匹配那些,您可以使用 transpiled 版本:
/(?:\uD83C\uDDE6)(?:\uD83C[\uDDE9-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|(?:\uD83C\uDDE7)(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|(?:\uD83C\uDDE8)(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF4\uDDF7\uDDFA-\uDDFF])|(?:\uD83C\uDDE9)(?:\uD83C[\uDDEA\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|(?:\uD83C\uDDEA)(?:\uD83C[\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDF9])|(?:\uD83C\uDDEB)(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|(?:\uD83C\uDDEC)(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|(?:\uD83C\uDDED)(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|(?:\uD83C\uDDEE)(?:\uD83C[\uDDE9-\uDDF4\uDDF6-\uDDF9])|(?:\uD83C\uDDEF)(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C\uDDF0)(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|(?:\uD83C\uDDF1)(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF8-\uDDFB\uDDFE])|(?:\uD83C\uDDF2)(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|(?:\uD83C\uDDF3)(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|(?:\uD83C\uDDF4)(?:\uD83C\uDDF2)|(?:\uD83C\uDDF5)(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|(?:\uD83C\uDDF6)(?:\uD83C\uDDE6)|(?:\uD83C\uDDF7)(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|(?:\uD83C\uDDF8)(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|(?:\uD83C\uDDF9)(?:\uD83C[\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|(?:\uD83C\uDDFA)(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF])|(?:\uD83C\uDDFB)(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|(?:\uD83C\uDDFC)(?:\uD83C[\uDDEB\uDDF8])|(?:\uD83C\uDDFE)(?:\uD83C[\uDDEA\uDDF9])|(?:\uD83C\uDDFF)(?:\uD83C[\uDDE6\uDDF2\uDDFC])/g
我一直在尝试制作一个可以检测表情符号是否为国旗的正则表达式。我希望正则表达式匹配所有国家的国旗(从阿森松岛到津巴布韦)。
我的方法是将所有国旗一一放入正则表达式中。我希望有人能告诉我更好的方法。
国旗表情符号对应于一对标识国家/地区的本地符号(两个字母)(例如,FR 代表法国 - see list)。 您可以做的是使用匹配这些字母的任意组合的正则表达式。当然,这将包括不存在的国家代码(例如 ZZ),但这应该不包括任何其他表情符号。
这里是:
var reg = /[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/;
reg.test(""); // false
reg.test(""); // true
由于标志基本上是由两个 Unicode 字符创建的,因此可能的选项是 str.match(/[-]{2}/u)
,假设 str
包含该字符串。范围表达式中的两个值是 U+1F1E6(区域指示符号字母 A)和 U+1F1FF(区域指示符号字母 Z),均自 Unicode 6.0 起可用。
这个解决方案的主要缺点是它匹配那些指标符号的所有可能组合,因此不能保证指标代表有效的国家,例如。将与 .
匹配为了保持正则表达式的精确性,您只能构建正则表达式范围。
var country_emoji_ranges = ['\u{1F1E6}[\u{1F1E9}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]',
'\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]',
'\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F4}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]',
'\u{1F1E9}[\u{1F1EA}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]',
'\u{1F1EA}[\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1F9}]',
'\u{1F1EB}[\u{1F1EE}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]',
'\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]',
'\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]',
'\u{1F1EE}[\u{1F1E9}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]',
'\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]',
'\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]',
'\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F8}-\u{1F1FB}\u{1F1FE}]',
'\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]',
'\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]',
'\u{1F1F4}\u{1F1F2}',
'\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]',
'\u{1F1F6}\u{1F1E6}',
'\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]',
'\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]',
'\u{1F1F9}[\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]',
'\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F8}\u{1F1FE}\u{1F1FF}]',
'\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]',
'\u{1F1FC}[\u{1F1EB}\u{1F1F8}]',
'\u{1F1FE}[\u{1F1EA}\u{1F1F9}]',
'\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]'
];
var country_emoji_rx = new RegExp(country_emoji_ranges.join('|'), 'ug');
var text = "\u{1F1E6}\u{1F1E9}, \u{1F1E6}\u{1F1EA}, \u{1F1E6}\u{1F1EB}, \u{1F1E6}\u{1F1EC}, \u{1F1E6}\u{1F1EE}, \u{1F1E6}\u{1F1F1}, \u{1F1E6}\u{1F1F2}, \u{1F1E6}\u{1F1F4}, \u{1F1E6}\u{1F1F6}, \u{1F1E6}\u{1F1F7}, \u{1F1E6}\u{1F1F8}, \u{1F1E6}\u{1F1F9}, \u{1F1E6}\u{1F1FA}, \u{1F1E6}\u{1F1FC}, \u{1F1E6}\u{1F1FD}, \u{1F1E6}\u{1F1FF}, \u{1F1E7}\u{1F1E6}, \u{1F1E7}\u{1F1E7}, \u{1F1E7}\u{1F1E9}, \u{1F1E7}\u{1F1EA}, \u{1F1E7}\u{1F1EB}, \u{1F1E7}\u{1F1EC}, \u{1F1E7}\u{1F1ED}, \u{1F1E7}\u{1F1EE}, \u{1F1E7}\u{1F1EF}, \u{1F1E7}\u{1F1F1}, \u{1F1E7}\u{1F1F2}, \u{1F1E7}\u{1F1F3}, \u{1F1E7}\u{1F1F4}, \u{1F1E7}\u{1F1F6}, \u{1F1E7}\u{1F1F7}, \u{1F1E7}\u{1F1F8}, \u{1F1E7}\u{1F1F9}, \u{1F1E7}\u{1F1FB}, \u{1F1E7}\u{1F1FC}, \u{1F1E7}\u{1F1FE}, \u{1F1E7}\u{1F1FF}, \u{1F1E8}\u{1F1E6}, \u{1F1E8}\u{1F1E8}, \u{1F1E8}\u{1F1E9}, \u{1F1E8}\u{1F1EB}, \u{1F1E8}\u{1F1EC}, \u{1F1E8}\u{1F1ED}, \u{1F1E8}\u{1F1EE}, \u{1F1E8}\u{1F1F0}, \u{1F1E8}\u{1F1F1}, \u{1F1E8}\u{1F1F2}, \u{1F1E8}\u{1F1F3}, \u{1F1E8}\u{1F1F4}, \u{1F1E8}\u{1F1F7}, \u{1F1E8}\u{1F1FA}, \u{1F1E8}\u{1F1FB}, \u{1F1E8}\u{1F1FC}, \u{1F1E8}\u{1F1FD}, \u{1F1E8}\u{1F1FE}, \u{1F1E8}\u{1F1FF}, \u{1F1E9}\u{1F1EA}, \u{1F1E9}\u{1F1EF}, \u{1F1E9}\u{1F1F0}, \u{1F1E9}\u{1F1F2}, \u{1F1E9}\u{1F1F4}, \u{1F1E9}\u{1F1FF}, \u{1F1EA}\u{1F1E8}, \u{1F1EA}\u{1F1EA}, \u{1F1EA}\u{1F1EC}, \u{1F1EA}\u{1F1ED}, \u{1F1EA}\u{1F1F7}, \u{1F1EA}\u{1F1F8}, \u{1F1EA}\u{1F1F9}, \u{1F1EB}\u{1F1EE}, \u{1F1EB}\u{1F1EF}, \u{1F1EB}\u{1F1F0}, \u{1F1EB}\u{1F1F2}, \u{1F1EB}\u{1F1F4}, \u{1F1EB}\u{1F1F7}, \u{1F1EC}\u{1F1E6}, \u{1F1EC}\u{1F1E7}, \u{1F1EC}\u{1F1E9}, \u{1F1EC}\u{1F1EA}, \u{1F1EC}\u{1F1EB}, \u{1F1EC}\u{1F1EC}, \u{1F1EC}\u{1F1ED}, \u{1F1EC}\u{1F1EE}, \u{1F1EC}\u{1F1F1}, \u{1F1EC}\u{1F1F2}, \u{1F1EC}\u{1F1F3}, \u{1F1EC}\u{1F1F5}, \u{1F1EC}\u{1F1F6}, \u{1F1EC}\u{1F1F7}, \u{1F1EC}\u{1F1F8}, \u{1F1EC}\u{1F1F9}, \u{1F1EC}\u{1F1FA}, \u{1F1EC}\u{1F1FC}, \u{1F1EC}\u{1F1FE}, \u{1F1ED}\u{1F1F0}, \u{1F1ED}\u{1F1F2}, \u{1F1ED}\u{1F1F3}, \u{1F1ED}\u{1F1F7}, \u{1F1ED}\u{1F1F9}, \u{1F1ED}\u{1F1FA}, \u{1F1EE}\u{1F1E9}, \u{1F1EE}\u{1F1EA}, \u{1F1EE}\u{1F1F1}, \u{1F1EE}\u{1F1F2}, \u{1F1EE}\u{1F1F3}, \u{1F1EE}\u{1F1F4}, \u{1F1EE}\u{1F1F6}, \u{1F1EE}\u{1F1F7}, \u{1F1EE}\u{1F1F8}, \u{1F1EE}\u{1F1F9}, \u{1F1EF}\u{1F1EA}, \u{1F1EF}\u{1F1F2}, \u{1F1EF}\u{1F1F4}, \u{1F1EF}\u{1F1F5}, \u{1F1F0}\u{1F1EA}, \u{1F1F0}\u{1F1EC}, \u{1F1F0}\u{1F1ED}, \u{1F1F0}\u{1F1EE}, \u{1F1F0}\u{1F1F2}, \u{1F1F0}\u{1F1F3}, \u{1F1F0}\u{1F1F5}, \u{1F1F0}\u{1F1F7}, \u{1F1F0}\u{1F1FC}, \u{1F1F0}\u{1F1FE}, \u{1F1F0}\u{1F1FF}, \u{1F1F1}\u{1F1E6}, \u{1F1F1}\u{1F1E7}, \u{1F1F1}\u{1F1E8}, \u{1F1F1}\u{1F1EE}, \u{1F1F1}\u{1F1F0}, \u{1F1F1}\u{1F1F7}, \u{1F1F1}\u{1F1F8}, \u{1F1F1}\u{1F1F9}, \u{1F1F1}\u{1F1FA}, \u{1F1F1}\u{1F1FB}, \u{1F1F1}\u{1F1FE}, \u{1F1F2}\u{1F1E6}, \u{1F1F2}\u{1F1E8}, \u{1F1F2}\u{1F1E9}, \u{1F1F2}\u{1F1EA}, \u{1F1F2}\u{1F1EB}, \u{1F1F2}\u{1F1EC}, \u{1F1F2}\u{1F1ED}, \u{1F1F2}\u{1F1F0}, \u{1F1F2}\u{1F1F1}, \u{1F1F2}\u{1F1F2}, \u{1F1F2}\u{1F1F3}, \u{1F1F2}\u{1F1F4}, \u{1F1F2}\u{1F1F5}, \u{1F1F2}\u{1F1F6}, \u{1F1F2}\u{1F1F7}, \u{1F1F2}\u{1F1F8}, \u{1F1F2}\u{1F1F9}, \u{1F1F2}\u{1F1FA}, \u{1F1F2}\u{1F1FB}, \u{1F1F2}\u{1F1FC}, \u{1F1F2}\u{1F1FD}, \u{1F1F2}\u{1F1FE}, \u{1F1F2}\u{1F1FF}, \u{1F1F3}\u{1F1E6}, \u{1F1F3}\u{1F1E8}, \u{1F1F3}\u{1F1EA}, \u{1F1F3}\u{1F1EB}, \u{1F1F3}\u{1F1EC}, \u{1F1F3}\u{1F1EE}, \u{1F1F3}\u{1F1F1}, \u{1F1F3}\u{1F1F4}, \u{1F1F3}\u{1F1F5}, \u{1F1F3}\u{1F1F7}, \u{1F1F3}\u{1F1FA}, \u{1F1F3}\u{1F1FF}, \u{1F1F4}\u{1F1F2}, \u{1F1F5}\u{1F1E6}, \u{1F1F5}\u{1F1EA}, \u{1F1F5}\u{1F1EB}, \u{1F1F5}\u{1F1EC}, \u{1F1F5}\u{1F1ED}, \u{1F1F5}\u{1F1F0}, \u{1F1F5}\u{1F1F1}, \u{1F1F5}\u{1F1F2}, \u{1F1F5}\u{1F1F3}, \u{1F1F5}\u{1F1F7}, \u{1F1F5}\u{1F1F8}, \u{1F1F5}\u{1F1F9}, \u{1F1F5}\u{1F1FC}, \u{1F1F5}\u{1F1FE}, \u{1F1F6}\u{1F1E6}, \u{1F1F7}\u{1F1EA}, \u{1F1F7}\u{1F1F4}, \u{1F1F7}\u{1F1F8}, \u{1F1F7}\u{1F1FA}, \u{1F1F7}\u{1F1FC}, \u{1F1F8}\u{1F1E6}, \u{1F1F8}\u{1F1E7}, \u{1F1F8}\u{1F1E8}, \u{1F1F8}\u{1F1E9}, \u{1F1F8}\u{1F1EA}, \u{1F1F8}\u{1F1EC}, \u{1F1F8}\u{1F1ED}, \u{1F1F8}\u{1F1EE}, \u{1F1F8}\u{1F1EF}, \u{1F1F8}\u{1F1F0}, \u{1F1F8}\u{1F1F1}, \u{1F1F8}\u{1F1F2}, \u{1F1F8}\u{1F1F3}, \u{1F1F8}\u{1F1F4}, \u{1F1F8}\u{1F1F7}, \u{1F1F8}\u{1F1F8}, \u{1F1F8}\u{1F1F9}, \u{1F1F8}\u{1F1FB}, \u{1F1F8}\u{1F1FD}, \u{1F1F8}\u{1F1FE}, \u{1F1F8}\u{1F1FF}, \u{1F1F9}\u{1F1E8}, \u{1F1F9}\u{1F1E9}, \u{1F1F9}\u{1F1EB}, \u{1F1F9}\u{1F1EC}, \u{1F1F9}\u{1F1ED}, \u{1F1F9}\u{1F1EF}, \u{1F1F9}\u{1F1F0}, \u{1F1F9}\u{1F1F1}, \u{1F1F9}\u{1F1F2}, \u{1F1F9}\u{1F1F3}, \u{1F1F9}\u{1F1F4}, \u{1F1F9}\u{1F1F7}, \u{1F1F9}\u{1F1F9}, \u{1F1F9}\u{1F1FB}, \u{1F1F9}\u{1F1FC}, \u{1F1F9}\u{1F1FF}, \u{1F1FA}\u{1F1E6}, \u{1F1FA}\u{1F1EC}, \u{1F1FA}\u{1F1F2}, \u{1F1FA}\u{1F1F8}, \u{1F1FA}\u{1F1FE}, \u{1F1FA}\u{1F1FF}, \u{1F1FB}\u{1F1E6}, \u{1F1FB}\u{1F1E8}, \u{1F1FB}\u{1F1EA}, \u{1F1FB}\u{1F1EC}, \u{1F1FB}\u{1F1EE}, \u{1F1FB}\u{1F1F3}, \u{1F1FB}\u{1F1FA}, \u{1F1FC}\u{1F1EB}, \u{1F1FC}\u{1F1F8}, \u{1F1FE}\u{1F1EA}, \u{1F1FE}\u{1F1F9}, \u{1F1FF}\u{1F1E6}, \u{1F1FF}\u{1F1F2}, \u{1F1FF}\u{1F1FC}";
console.log(text.match(country_emoji_rx).length);
如果您想在不支持 u
标志的 JS 环境中匹配那些,您可以使用 transpiled 版本:
/(?:\uD83C\uDDE6)(?:\uD83C[\uDDE9-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|(?:\uD83C\uDDE7)(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|(?:\uD83C\uDDE8)(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF4\uDDF7\uDDFA-\uDDFF])|(?:\uD83C\uDDE9)(?:\uD83C[\uDDEA\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|(?:\uD83C\uDDEA)(?:\uD83C[\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDF9])|(?:\uD83C\uDDEB)(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|(?:\uD83C\uDDEC)(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|(?:\uD83C\uDDED)(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|(?:\uD83C\uDDEE)(?:\uD83C[\uDDE9-\uDDF4\uDDF6-\uDDF9])|(?:\uD83C\uDDEF)(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C\uDDF0)(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|(?:\uD83C\uDDF1)(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF8-\uDDFB\uDDFE])|(?:\uD83C\uDDF2)(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|(?:\uD83C\uDDF3)(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|(?:\uD83C\uDDF4)(?:\uD83C\uDDF2)|(?:\uD83C\uDDF5)(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|(?:\uD83C\uDDF6)(?:\uD83C\uDDE6)|(?:\uD83C\uDDF7)(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|(?:\uD83C\uDDF8)(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|(?:\uD83C\uDDF9)(?:\uD83C[\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|(?:\uD83C\uDDFA)(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF8\uDDFE\uDDFF])|(?:\uD83C\uDDFB)(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|(?:\uD83C\uDDFC)(?:\uD83C[\uDDEB\uDDF8])|(?:\uD83C\uDDFE)(?:\uD83C[\uDDEA\uDDF9])|(?:\uD83C\uDDFF)(?:\uD83C[\uDDE6\uDDF2\uDDFC])/g