业余草 Java正则表达式,验证手机号和电话号码

Java 正则表达式

正则表达式定义了字符串的模式。

正则表达式可以用来搜索、编辑或处理文本。

正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。

正则表达式实例

一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串。

.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。

下表列出了一些正则表达式的实例及描述:

正则表达式 描述

this is text


匹配字符串 "this is text"


this\s+is\s+text


注意字符串中的 \s+

匹配单词 "this" 后面的 \s+ 可以匹配多个空格,之后匹配 is 字符串,再之后 \s+ 匹配多个空格然后再跟上 text 字符串。

可以匹配这个实例:this is text


^\d+(\.\d+)?


^ 定义了以什么开始

\d+ 匹配一个或多个数字

? 设置括号内的选项是可选的

\. 匹配 "."

可以匹配的实例:"5", "1.5" 和 "2.21"。

Java 正则表达式和 Perl 的是最为相似的。

java.util.regex 包主要包括以下三个类:

  • Pattern 类:

    pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。

  • Matcher 类:

    Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
  • PatternSyntaxException:

    PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
 /**
   * 获取当前的httpSession
   * @author :shijing
   * 2016年12月5日下午3:46:02
   * @return
   */
  public static HttpSession getSession() {
    return getRequest().getSession();
  }

  /**
   * 手机号验证
   * @author :shijing
   * 2016年12月5日下午4:34:46
   * @param  str
   * @return 验证通过返回true
   */
  public static boolean isMobile(final String str) {
      Pattern p = null;
      Matcher m = null;
      boolean b = false;
      p = Pattern.compile("^[1][3,4,5,7,8][0-9]{9}$"); // 验证手机号
      m = p.matcher(str);
      b = m.matches();
      return b;
  }
  /**
   * 电话号码验证
   * @author :shijing
   * 2016年12月5日下午4:34:21
   * @param  str
   * @return 验证通过返回true
   */
  public static boolean isPhone(final String str) {
      Pattern p1 = null, p2 = null;
      Matcher m = null;
      boolean b = false;
      p1 = Pattern.compile("^[0][1-9]{2,3}-[0-9]{5,10}$");  // 验证带区号的
      p2 = Pattern.compile("^[1-9]{1}[0-9]{5,8}$");         // 验证没有区号的
      if (str.length() > 9) {
         m = p1.matcher(str);
         b = m.matches();
      } else {
          m = p2.matcher(str);
         b = m.matches();
      }
      return b;
  }

  public static void main(String[] args) {
    String phone = "13900442200";
    String phone2 = "021-88889999";
    String phone3 = "88889999";
    String phone4 = "1111111111";
    //测试1
    if(isPhone(phone) || isMobile(phone)){
      System.out.println("1这是符合的");
    }
    //测试2
    if(isPhone(phone2) || isMobile(phone2)){
      System.out.println("2这是符合的");
    }
    //测试3
    if(isPhone(phone3) || isMobile(phone3)){
      System.out.println("3这是符合的");
    }
    //测试4
    if(isPhone(phone4) || isMobile(phone4)){
      System.out.println("4这是符合的");
    }else{
      System.out.println("不符合");
    }
  }

  

如有疑问,欢迎关注微信公众号“业余草”!

原文地址:https://www.cnblogs.com/panda2/p/9246553.html

时间: 2024-10-14 11:27:47

业余草 Java正则表达式,验证手机号和电话号码的相关文章

正则表达式验证邮箱、电话号码

验证电话号码的正则:(\d{3}-)(\d{8})$|(\d{4}-)(\d{7})$|(\d{4}-)(\d{8})$ (这里的电话号码为新式的号码) 验证邮箱的正则:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* \w任意大小写英文字母 0-9数字 下划线 +为至少出现1个以上字符 [-+.]\w+ 任意包含 - + . 及 \w字符的组合出现0次或多次 @ 固定符号 \w+ 出现至少1次以上 \w的字符 [-.]\w+ 出现零次或多次这种组合的字符

java 正则表达式 验证字符串 只包含汉字英文数字

String content = “testContent”; String regex="^[a-zA-Z0-9\u4E00-\u9FA5]+$"; Pattern pattern = Pattern.compile(regex); Matcher match=pattern.matcher(content); boolean b=match.matches(); if(b) { Toast.makeText(this, "success...", Toast.L

java正则表达式验证非原创

1 /** 2 * 3 */ 4 package com.ssh.util; 5 6 import java.util.regex.Matcher; 7 import java.util.regex.Pattern; 8 9 /** 10 * @author leorain 11 * 12 */ 13 public class ValidateUtil { 14 /** 15 * 手机号验证 16 * 17 * @param str 18 * @return 验证通过返回true 19 */ 2

Android 正则表达式验证手机号、姓名(包含少数民族)、身份证号

最近项目中新增的功能,需要对手机号.姓名.身份证号等一些信息进行验证,最好的方法是通过正则表达式来验证,网上查了一些资料,写了这几个工具方法. 1.验证手机号 规则:第一位只能是1,第二位为3-8中的数字,3-11位为任意的数字 /** * 手机号号段校验, 第1位:1: 第2位:{3.4.5.6.7.8}任意数字: 第3-11位:0-9任意数字 * @param value * @return */ public static boolean isTelPhoneNumber(String v

关于在iOS系统上复制通讯录里的电话号码,用户正则表达式验证手机号不通过的问题

这是我在iOS11系统上复制下来的手机号然后发到钉钉上的截图 你会发现除了中间的2个空格以外,最后面貌似也有一个空格,但是当你把它复制到编辑器里面的时候空格就没有了,当你点击键盘上的左右方向键移动光标的时候你会发现光标在手机号末尾停留了一次才会移动,这说明手机号末尾有一个不占位的符号.我把手机号码复制到控制台打印了一下长度 讲道理11位手机号加上中间2个空格应该是13位,但是现在长度是14位. 我把它复制下来用URL编码了一下 编码前: 编码后: 出现了这么一串. 于是乎,我目前只想到了这种方法

JS和Java正则表达式验证

js代码 <script type="text/javascript"> function SubmitCk() { var reg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9][email protected]([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; if (!reg.test($("#txtEmail").val())) { alert(&quo

基于python的-使用正则表达式验证手机号

由于要用到手机号验证,所以索性写一个简单的手机号验证的代码. 1 import re 2 3 4 def main(): 5 tel = input("请输入手机号:") 6 # ret = re.match(r"1[35678]\d{9}", tel) 7 # 由于手机号位数大于11位也能匹配成功,所以修改如下: 8 ret = re.match(r"^1[35678]\d{9}$", tel) 9 10 if ret: 11 print(&q

JQuery使用正则表达式验证手机号,邮箱,身份证(含有港澳台)

自己对正则验证也没系统用过,这次自己做个demo,一下子把这些全都用上了,下次有需要直接来拿了. 以下代码是在页面使用JQuery进行验证的,也有在后台进行验证的,可以试试,都一样的原理. 直接上代码:注意:(有些验证规则当然不仅仅是本文的,也许还有其他更好的,可以留言交流) 手机号:(移动-电信-联通) var tel = $("#PhoneNumber").val();//获取输入的手机号 var yidongreg = /^(134[012345678]\d{7}|1[34578

js正则表达式 验证手机号,email地址和邮政编码

手机号码的验证(13开头和158,159开头,共11位) var re;        var ss=document.getElementById('textbox3').value;        re= /^(13[0-9]{9})|(15[89][0-9]{8})$/        if(re.test(ss))         {           document.getElementById('label3').innerText="";   //给label赋值用in