java - 正则表达式替换问题理解

标签 java regex matcher

我正在尝试为无效电话号码编写替换逻辑,我通过 map 提供了该逻辑 我读了一些正则表达式线程,但我不知道这是否真的可能。

示例:

输入电话号码:+410712345678

我正在尝试使用的正则表达式:

 "^\\+(?:[0-9] ?){6,14}[0-9]$" 

正则表达式和过滤后的数字应为:+41712345678。所以实际上删除了 0 的第一个实例。

第二个例子:

输入电话号码:+41(071)2345678

我正在尝试使用的正则表达式:

"^\\+(?:[0-9] ?)\\({0,3}\\){3,11}[0-9]$"

正则表达式和过滤后的数字应为:+41712345678。因此,实际上删除了 0 的第一个实例以及大括号。

我正在尝试使用某种模式来自动从这些电话号码中删除那些无效的部分。这些号码需要采用这种方式格式化才能与我的 VOIP 应用程序一起使用。

有什么方法可以使用正则表达式创建类似的过滤模式吗?

最佳答案

看来您应该只对瑞士电话号码应用该规则,即 +41 号码,因为简单地从任何国际号码中删除第一个 0 都是错误的。

所以,ph = ph.replaceFirst("^(\\+41)\\(?0?([0-9]{2})\\)?", "$1$2")

参见regex101了解它是如何工作的。

关于java - 正则表达式替换问题理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38247781/

相关文章:

java - 布置 JPanel 来制作简单的 GUI

java - 在java中,当使用正则表达式查找模式时,如何获得嵌套结果?

java - 字符串的 Hamcrest 匹配器,其中字符串包含一些随机值

javascript - 如何将字符串转换为插值字符串?

Javascript Regex - 捕获特定域或没有域的链接

regex - 如何将带有特定参数的 URL 重定向到不带特定参数的 URL?

java - 用于比较父类(super class)和子类的 Hamcrest 匹配器

java - 编译时出现不兼容类型问题 - void to MimeMessage

java - 使用java执行密码查询

java - 来自 MYSQL 的 java 中的有序列表 ul li 嵌套树