【正则表达式】Android中手机号正则表达式的使用 您所在的位置:网站首页 联通手机号开头有哪些 【正则表达式】Android中手机号正则表达式的使用

【正则表达式】Android中手机号正则表达式的使用

2023-06-13 05:20| 来源: 网络整理| 查看: 265

11位手机号的正则表达式实现(可直接使用) 前言

最近在一个注册页面注册账号时,一直提示输入的手机号错误,因为我的手机号是198的号码段,所以怀疑是手机号的正则表达式没有及时更新,恰逢周末,写篇博客记录一下。

一、正则表达式简单介绍

正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。

正则表达式可以在文本中查找、替换、提取和验证特定的模式。

二、正则表达式的组成部分

字符匹配

普通字符:普通字符按照字面意义进行匹配,例如匹配字母 “a” 将匹配到文本中的 “a” 字符。 元字符:元字符具有特殊的含义,例如 \d匹配任意数字字符,\w 匹配任意字母数字字符,. 匹配任意字符(除了换行符)等。

量词

*:匹配前面的模式零次或多次。 +:匹配前面的模式一次或多次。 ?:匹配前面的模式零次或一次。 {n}:匹配前面的模式恰好 n 次。 {n,}:匹配前面的模式至少 n 次。 {n,m}:匹配前面的模式至少 n 次且不超过 m 次。

字符类

[ ]:匹配括号内的任意一个字符。例如,[abc] 匹配字符 “a”、“b” 或 “c”。 [^ ]:匹配除了括号内的字符以外的任意一个字符。例如,[^abc] 匹配除了字符 “a”、“b” 或 “c” 以外的任意字符。

边界匹配

^:匹配字符串的开头。 $:匹配字符串的结尾。 \b:匹配单词边界。 \B:匹配非单词边界。

分组和捕获

( ):用于分组和捕获子表达式。 (?: ):用于分组但不捕获子表达式。

特殊字符

\:转义字符,用于匹配特殊字符本身。 .:匹配任意字符(除了换行符)。 |:用于指定多个模式的选择。

3.手机号正则表达式案例

以下是从Android项目中直接复制出的代码,使用的Java语言,可拿走直接使用

//手机号正则表达式 public static final String PHONE = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$"; /** * 简单介绍一下正则表达式的结构 * ^:表示匹配开始的位置 * [38][0-9]:手机号前两位为13和18,[0-9]表示第三位为0-9任意数字,如130、180。(下同) * |:表示多个匹配模式,因手机号第二位第三位并未全部使用数字0-9,比如没有141开头的手机号 * \d{8}:匹配8个数字 * $:结束符 */ /** * 正则表达式匹配判断 * @param patternStr 匹配规则 * @param input 需要做匹配操作的字符串 * @return true if matched, else false */ //此处传入两个值,第一个是手机号的正则表达式,第二个是输入的手机号 public static boolean isMatchered(String patternStr, CharSequence input) { Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(input); if (matcher.find()) { return true; } return false; } //调用,这里为突出正则表达式的判断只贴出手机号相关代码 btnRegister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String phonenumber = phone.getText().toString(); if (!isMatchered(PHONE, phonenumber)){ Toast.makeText(getApplicationContext(),"手机号码格式错误!",Toast.LENGTH_LONG).show(); } } });

关于Pattern和Matcher

Pattern 类: pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。 Matcher 类: Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

总结

以上就是今天要讲的内容,如果有描述有误的地方或者更好的建议欢迎大家评论区留言



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有