Java字符串替换电话号码中无效字符的正则表达式

标签 java regex phone-number

我正在尝试编写一个正则表达式来替换电话号码中的所有无效字符:

示例电话号码:

  • +36 00 211 1111 -> +36002111111
  • +49 03 691 4193 -> +49036914193
  • +36 00 211 1111 -> +36002111111
  • 06 78 90 12 34 -> 0678901234

只有当“+”是字符串中的第一个字符时,正则表达式才应该允许它,其余的只能是数字类型 [0-9]

这是我当前的正则表达式:

phone = phone.replaceAll("[/(?<!^)\+|[^\d+]+//g]", "");

最佳答案

使用这个:[^\d+]|(?!^)\+

phone = phone.replaceAll("[^\\d+]|(?!^)\\+", "");
  • [^\d+]匹配不是数字或 + 的字符
  • (?!^)\+火柴+ 在字符串开头的字符

在您当前的正则表达式中,[/(?<!^)\+|[^\d+]只是一个字符类(所以它匹配单个字符,+ 让它重复那个字符类,然后你的模式匹配文字 //g] 字符串。所以,错误的语法。

关于Java字符串替换电话号码中无效字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38803068/

相关文章:

java - 大括号使得 for 循环只运行一次?

java - 在没有最终参数声明的情况下将最终参数传递给另一个方法

javascript - 如何用JavaScript提取多个脚本标签之间的代码块?

ios - 检查联系人的号码是移动电话还是固定电话(固定电话)号码

ios - 检测iphone地区

java - 有条件调用构造函数

python - 根据输入列表重命名文件 Python

java - 如何从文件名中提取日期部分?

java - 在应用程序之外使用电话号码?

java - 如何从库中提取单个类及其所有依赖项?