scala中的正则表达式

\\d 是正则表达式的表现方式

object Test{
  def main(args: Array[String]): Unit = {
    //1.定义规则。写正则表达式
     val reg ="\\d".r

    //2.在目标字符串中,去按照这个规则去找符合的子字符串
    val result = reg.findFirstIn("我是jj,电话为:12345")
    if(!result.isEmpty){  //检查结果是否为空 !,表示取反
      println(result.get)//打印结果
    }
    println("-"*40)
    reg.findAllIn("我是jj,电话为:12345").toList.foreach(println)
  }
}

运行结果:

常见规则

val reg ="\\d".r  // \d表示数字
val reg ="\\D".r  //\D表示非数字
val reg ="\\w".r  // \w表示一个字:0-9 a-z A-Z _
val reg ="\\W".r  //\W表示一个非子:除了0-9 a-z A-Z _之外的
val reg ="a\\sb".r  // \s表示一个空格
val reg = "a\\Sb".r //\S匹配一个非空白字符
val reg ="[a-zA-Z]".r //a-z,A-Z中的某一个
val reg ="[^a-zA-Z]".r //不是a-z,A-Z中的某一个
val reg ="a.c".r //a和c之间有一个字符。 .表示除了换行之外的其他任意的一个字符
val reg = "a*".r
val reg = "(ab)+".r
val reg = "A{5}".r
val reg = "a*".r  //*表示前面的规则0次
val reg = "ab+".r  //+表示前面的规则1次
val reg = "ab?".r  //?表示前面的规则0次或1次
val reg = "ab{3}".r  //{3}表示前面的规则3次
val reg = "ab{3,}".r  //{3,}表示前面的规则3次+
val reg = "ab{3,5}".r  //{3,5}表示前面的规则3次~5次

寻找手机号

    val reg = "1[3-9]\\d{9}".r
    //规则:
    // 1.数字1是第一个字符
    // 2.第二个字符是3-9
    // 3.其他是数字,一共有9个数字
    reg.findAllIn("15599038274刀削面,19747637928五花肉3,19822338658")

案例:判断用户名是否合法

规则
1.字符串的长度在6~12
2.只能包含:a-z,A-Z,0-9,_,-
3.不能以数字开头

    val name1="abc" //不合法。  长度不够
    val name2= "abc1234567890"//不合法,长度太长
    val name3 = "ajnds123_" //合法
    val name4 = "1ajnds123_" //不合法,数字开头


    //正则表达式
    val reg = "[a-zA-Z_-][0-9a-zA-Z_-]{5,11}".r
    println(reg.matches(name1))
    println(reg.matches(name2))
    println(reg.matches(name3))
    println(reg.matches(name4))

手机号隐藏

val str = "19747637928 and 19822338658 are phone numbers";
    val reg = "(\\d{3})(\\d{4})(\\d{4})".r //能匹配手机号的正则表达式
    //任务:把str中的手机号的中间3-4替换为*
    var str1 = reg.replaceAllIn(str, m => {
      println(m.group(1))
      println(m.group(2))
      println(m.group(3))
      m.group(1) + "****" + m.group(3)
    })
    println(s"替换之后的字符串是:${str1}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值