emoji输入过滤

给edittext添加inputfilter,同时对键盘输入和剪切板粘贴有效

edittext.setFilters(new InputFilter[]{emojiFilter});
复制代码
public class EmojiInputFilter implements InputFilter {
    private static final String EMOJI_REGEX = "(?:" +
            "[\\uD83C\\uDE01\\uD83C\\uDE02\\uD83C\\uDE1A\\uD83C\\uDE2F\\uD83C\\uDE32-\\uD83C\\uDE3A\\uD83C\\uDE50\\uD83C\\uDE51]\\uFE0F?|" +
            "[\\uD83C\\uDD70\\uD83C\\uDD71\\uD83C\\uDD7E\\uD83C\\uDD7F\\uD83C\\uDD8E\\uD83C\\uDD91-\\uD83C\\uDD9A]\\uFE0F?|" +
            "[\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA]\\uFE0F|" +
            "[\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE]\\uFE0F?|" +
            "[\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55]\\uFE0F?|" +
            "[\\u0023\\u002A\\u0030-\\u0039]\\uFE0F?\\u20E3|" +
            "[\\u2194-\\u2199\\u21A9-\\u21AA]\\uFE0F?|" +
            "[\\uD83C\\uDDE6-\\uD83C\\uDDFF]{1,2}|" +
            "[\\u2600-\\u26FF]\\uFE0F?|" +
            "[\\u2700-\\u27BF]\\uFE0F?|" +
            "[\\u2934\\u2935]\\uFE0F?|" +
            "[\\u3030\\u303D]\\uFE0F?|" +
            "[\\u3297\\u3299]\\uFE0F?|" +
            "[\\u203C\\u2049]\\uFE0F?|" +
            "[\\u00A9\\u00AE]\\uFE0F?|" +
            "[\\u2122\\u2139]\\uFE0F?|" +
            "[\\ud83d\\udc00-\\ud83d\\udfff]\\uFE0F?|" +
            "\\uD83C\\uDC04\\uFE0F?|" +
            "\\uD83C\\uDCCF\\uFE0F?|" +
            "\\u24C2\\uFE0F?|" +
            "[\\uD83C\\uDF00-\\uD83D\\uDDFF]\\uFE0F?|" +
            "[\\uD83E\\uDD00-\\uD83E\\uDDFF]\\uFE0F?|" +
            "[\\uD83D\\uDE00-\\uD83D\\uDE4F]\\uFE0F?|" +
            "[\\uD83D\\uDE80-\\uD83D\\uDEFF]\\uFE0F?" +
            "?)";
    private final Pattern pattern = Pattern.compile(EMOJI_REGEX);

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        if (source == null) {
            return null;
        }
        Matcher matcher = pattern.matcher(source);
        if (matcher.find()) {
            return matcher.replaceAll("");
        }
        return source;
    }
}
复制代码

转载于:https://juejin.im/post/5c459d676fb9a049cd5483e2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值