常用的正则匹配

常用的正则匹配

/**
 * 判断是否是可以访问的链接
 *
 * @deprecated 不能满足头像URL判断规则,可能URL过长导致ANR
 * @param str 
 * @return
 */
public static boolean isURL(String str) {
    Pattern pattern = Pattern.compile("^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\/])+$");
    return pattern.matcher(str).matches();
}


/**
 * 验证中国手机格式
 */
public static boolean isChineseMobile(String number) {
/*
移动:134、135、136、137、138、139、150、151、152、157(TD)、158、159、178(新)、182、184、187、188
联通:130、131、132、152、155、156、185、186
电信:133、153、170、173、177、180、181、189、(1349卫通)
总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9
*/
    String num = "[1][34578]\\d{9}";//"[1]"代表第1位为数字1,"[34578]"代表第二位可以为3、4、5、7、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。
    Pattern pattern = Pattern.compile(num);
    matcher = pattern.matcher(number);
    if (TextUtils.isEmpty(number)) {
        return false;
    } else {
        //matches():字符串是否在给定的正则表达式匹配
        return matcher.matches();
    }
}

/**
 * 是否有特殊字符 ((?=[\x21-\x7e]+)[^A-Za-z0-9])
 *
 * @param content
 * @return
 */
public static boolean specicalCharaters(String content) {
    Log.d(TAG, "specicalCharaters: " + content);
    String reg = "((?=[\\x21-\\x7e]+)[^A-Za-z0-9])+";
    Pattern pattern = Pattern.compile(reg);
    matcher = pattern.matcher(content);
    //matcher.matches()为全部匹配,只有全部都是特殊字符才会返回true
    //matcher.find()为部分匹配,只要含有特殊字符就会返回true
    return matcher.find();
}

/**
 * 是否含有Emoji表情
 *
 * @param content
 * @return
 */
public static boolean hasEmoji(String content) {

    int len = content.length();
    for (int i = 0; i < len; i++) {
        //将字符串拆开来校验
        if (isEmojiCharacter(content.charAt(i))) {
            return true;
        }
    }
    return false;
}

/**
 * 判断是否是Emoji表情
 *
 * @param codePoint
 * @return
 */
private static boolean isEmojiCharacter(char codePoint) {
    return !(codePoint == 0x0 || codePoint == 0x9 || codePoint == 0xA || codePoint == 0xD || codePoint >= 0x20 && codePoint <= 0xD7FF || codePoint >= 0xE000 && codePoint <= 0xFFFD);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值