一.要点
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 ---> 执行符
}
}
二.匹配合法手机号
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)
}
}
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"))//
}
}