正则表达式-手机号验证(一)

19 阅读3分钟

一.要点

1. 在scala中,正则表达式就是在字符串的后面添加.r。

2. \是对\进行转义。\d是一个整体,用来表示一个整数。

package reg

/**
 * 什么是正则表达式
 * 正则表达式是一种用来匹配字符串的强大工具,他由普通字符串(例如字符a到z)和特殊字符(称为“元字符”)
 * 2.使用步骤
 *   (1)定义一个正则表达式。"".r
 *   (2)调用正则表达式的相关信息
 *3.规则
 *  (1)\d表示一个数字
 *  (2)\d{4}表示四个数字 {n} 量词,让前面的规则重复n次
 */
object reg01 {
  def main(args: Array[String]): Unit = {
    //定义一个正则表达式
   // val reg ="\d\d\d".r//三个相邻的数字
    val reg ="\d{5}".r//五个相邻的数字
    //1.匹配。在目标字符串。把符合正则表达式要求内容,找出来
    val source ="67891 one 2105 two 3 4 5"
    reg.findAllIn(source).foreach(println)
    //2.验证。检查给目标字符串,是否符合正则表达式的要求。
    //reg.matches()
//转义字符.改变它后面的字符的含义
//    1.\ ---> \
//    2.\t ---> 制表符
 //   3.\n ---> 执行符

  }
}

image.png 二.匹配合法手机号

1. 匹配一个数字。\d

2. 匹配两个数字。\d\d

3. 匹配11个数字。\d{11}

4. 匹配11个数字,并且以1开头。1\d{10}

5. 只能匹配11个数字,不能多也不能少。^1\d{10}$

6. 第2位可以是3,5,6,7,8,9。^1[356789]\d{9}$

package reg

/**
 *目标:在给定字符串中,匹配出合法的手机号
 * 1.有11个连续的数字
 * 2.手机号以1开头
 * 3.手机号的第二位:3578
 *3.规则
 * (1) \d表示一个数字
 * (2) \d表示边界,空格,或者是最开始
 * (3) \d{}表示四个数字{n}量词,让前面规则重复n次
 * (4) []。表示其中一个字符[3578]就是4个数字中的一个,[3-9]就是3456789中的某一个  [a-z]就是26个字母中的某一个
 */
object reg02 {
  def main(args: Array[String]): Unit = {
 //
    val reg ="\b1[3578]\d{9}".r// 1的后面跟着3,5,7,8 后面再跟着9个相邻的数字
    //1.匹配。在目标字符串。把符合正则表达式要求内容,找出来
    val source ="15097274417, 15097274446, 15099274428, 15009272422, 429005198406110045"
    reg.findAllIn(source).foreach(println)
  }
}

image.png

package reg

/**
 *目标:在给定字符串中,匹配出合法的手机号
 * 1.有11个连续的数字
 * 2.手机号以1开头
 * 3.手机号的第二位:3578
 *3.规则
 * (1) \d表示一个数字
 * (2) \d表示边界,空格,或者是最开始
 * (3) \d{}表示四个数字{n}量词,让前面规则重复n次
 * (4) []。表示其中一个字符[3578]就是4个数字中的一个,[3-9]就是3456789中的某一个  [a-z]就是26个字母中的某一个
 * (4)^表示开始
 * (5)$表示结束
 */
object reg03 {
  def main(args: Array[String]): Unit = {
    //定义一个正则表达式
    val reg ="^1[3578]\d{9}$".r// 1的后面跟着3,5,7,8 后面再跟着9个相邻的数字
    println(reg .matches("13622345678"))//
    println(reg .matches("12622345679"))//
    println(reg .matches("1362234569"))//
    println(reg .matches("136223456791"))//
  }
}

image.png