Android中常用的正则表达式(持续补充中)

参考:Android中的正则表达式语法
项目实践:
1.高亮文本中数字部分
例如要展示:附近有200+个工作机会
如果红色部分的数字是可变的,但是在页面中没有其他用途,那么在与Server端制定接口协议时,这句话就可以当做一个字段返回,红色效果由APP这边来实现。代码如下:

        tv_near = (TextView)findViewById(R.id.tv_near);
        String respText = "附近有200+个工作机会";
        String num = getNumbers(respText);
        if(!TextUtils.isEmpty(num)){
            int sindex = result.indexOf(num);
            if(sindex != -1) {
                SpannableString msp = new SpannableString(respText);
                msp.setSpan(new ForegroundColorSpan(Color.parseColor("#ff552e")), sindex, sindex + num.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                tv_near.setText(msp);
            } else{
                tv_near.setText(respText);
            }
        } else {
            tv_near.setText(respText);
        }

其中的关键方法是:

    /**
     * 解释:(\\d+) : \d表示数字,+表示匹配1个或多个;
     * [+]? : []表示一个集合,+表示字符+,?表示0个或1个
     * 函数作用:匹配“数字”或者“数字+”两种样式的字符串
     * @param content
     * @return
     */
    public static String getNumbers(String content) {
        String regExp = "(\\d+)[+]?";
        Pattern pattern = Pattern.compile(regExp);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            return matcher.group(0);
        }
        return "";
    }

2.用户名必须是完全的中文字符,不能包含其他任何字符

    /**
     * 检查是否符合2-5个中文字符
     * @return 如果符合返回true,否则返回false
     */
    public static boolean isValidUserName(String inputStr) {
        if (TextUtils.isEmpty(inputStr)) {
            return false;
        }
        boolean flag = false;
        Pattern p = Pattern.compile("^[\u4E00-\u9FA5\uF900-\uFA2D]{2,5}$");
        Matcher m = p.matcher(inputStr);
        if (m.matches()) {
            flag = true;
        }
        return flag;
    }

你可能感兴趣的:(Android)