21xrx.com
2024-06-03 09:29:40 Monday
登录
文章检索 我的文章 写文章
Java正则表达式——数字提取与加密
2023-06-27 04:00:36 深夜i     --     --
Java 正则表达式 数字提取 加密

Java正则表达式是一种强大的文本处理工具,在Java中使用正则表达式可以轻松地实现字符串的匹配、查找、替换、分离等功能。本文主要介绍在Java中如何利用正则表达式实现数字提取与加密功能。

数字提取

在日常开发中,经常需要从字符串中提取数字。对于简单的数字提取,我们可以使用字符串操作相关的函数实现。但如果需要提取的数字有特定的格式,或者需要提取多组数字,则使用正则表达式会更加便捷。

示例:从字符串中提取手机号码

假设有如下字符串:


Java正则表达式是一种强大的文本处理工具,可以用来实现手机号码的提取。我手机号码是13812345678,你的手机号是13611112222。

我们需要从字符串中提取手机号码。手机号码的格式是11位数字,且以13、14、15、17、18、19开头。我们可以使用Java正则表达式进行匹配,如下所示:


String str = "Java正则表达式是一种强大的文本处理工具,可以用来实现手机号码的提取。我手机号码是13812345678,你的手机号是13611112222。";

Pattern pattern = Pattern.compile("1[345789]\\d{9}");

Matcher matcher = pattern.matcher(str);

while (matcher.find()) {

  System.out.println(matcher.group());

}

以上代码使用正则表达式`1[345789]\\d{9}`进行匹配。解释如下:

- `1`:手机号以数字1开始

- `[345789]`:手机号第二位是3、4、5、7、8、9之一

- `\\d{9}`:手机号后面9位是数字

运行结果如下:


13812345678

13611112222

示例:从字符串中提取多组带小数点的数字

假设有如下字符串:


Java正则表达式还可以用来提取数学公式中的数字。例如:1.23 + 4.56 / 7.89 = 1.765。

我们需要从字符串中提取公式中的小数。公式中的小数有以下特点:

- 含有小数点

- 可能为整数

- 可能有正负号

- 可能会出现科学计数法,如1.23e-2

我们可以使用正则表达式进行匹配,如下所示:


String str = "Java正则表达式还可以用来提取数学公式中的数字。例如:1.23 + 4.56 / 7.89 = 1.765。";

Pattern pattern = Pattern.compile("-?\\d+(\\.\\d+)?([eE]-?\\d+)?");

Matcher matcher = pattern.matcher(str);

while (matcher.find()) {

  System.out.println(matcher.group());

}

以上代码使用正则表达式`-?\\d+(\\.\\d+)?([eE]-?\\d+)?`进行匹配。解释如下:

- `-?`:可能有负号

- `\\d+`:整数部分必须至少有一位数字

- `(\\.\\d+)?`:小数点后面可以有0位或1位或多位数字

- `([eE]-?\\d+)?`:可能出现科学计数法,如e-2或E+3等

运行结果如下:


1.23

4.56

7.89

1.765

加密

Java正则表达式除了可以用来提取文本中的数字,还可以用来对文本进行加密。在加密过程中,我们通常会将文本中的敏感信息或机密信息替换为一些随机字符串或编码后的字符串,以达到保密的效果。

示例:对字符串中的手机号码进行加密

假设有如下字符串:


Java正则表达式还可以用来对手机号进行加密。我手机号码是13812345678,你的手机号是13611112222。

我们需要对文本中的手机号码进行加密。加密的规则是将手机号码的前3位和后4位使用星号(*)代替。例如13812345678会被加密为138****5678。

我们可以使用Java正则表达式进行匹配,并使用Matcher的replaceFirst()方法进行替换,如下所示:


String str = "Java正则表达式还可以用来对手机号进行加密。我手机号码是13812345678,你的手机号是13611112222。";

Pattern pattern = Pattern.compile("1[34578]\\d{8}");

Matcher matcher = pattern.matcher(str);

while (matcher.find()) {

  String oldNum = matcher.group();

  String newNum = oldNum.substring(0, 3) + "****" + oldNum.substring(7);

  str = str.replaceFirst(oldNum, newNum);

}

System.out.println(str);

以上代码使用正则表达式`1[34578]\\d{8}`进行匹配。解释如下:

- `1`:手机号以数字1开始

- `[34578]`:手机号第二位是3、4、5、7、8之一

- `\\d{8}`:手机号后面8位是数字

运行结果如下:


Java正则表达式还可以用来对手机号进行加密。我手机号码是138****5678,你的手机号是136****2222。

总结

本文主要介绍了Java正则表达式的数字提取与加密功能。可以通过正则表达式轻松地实现从文本中提取数字或对敏感信息进行加密的功能。希望此文能对读者有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复